XmlElement annotation 不允许使用 WebParam

2022-09-03 04:26:02

我在Web服务中有一个方法,具有以下签名:

@WebResult(name="purchaseId") public int CreatePurchase(
            @XmlElement(required=true)
            @WebParam(name = "item") String item {
  ...
}

在我看来(根据我发现的信息),这应该有效。不幸的是,我在编译时收到以下错误消息:

The annotation @XmlElement is disallowed for this location

有谁知道如何解决这个问题?


答案 1

默认情况下,JAX-B 包含在 JDK 中。特定 JDK 附带的版本更新频率不如 JAX-B 本身。JDK (1.6) 附带的当前版本是 JAX-B 2.1.10(此处有文档记录)。

仅允许对以 JAX-B 2.2 开头的方法参数进行@XmlElement

当 Java 加载库时,它会先加载 JDK 附带的库,然后再加载类路径上的库。升级到 Java 7 可以解决您的问题。还有一个过程可以告诉Java,如果您无法升级到Java 7,则要使用更新的库。这些被称为“背书”库,您必须将库放在与JDK本身相同的文件夹结构中。此处描述了该过程。


答案 2

当您收到以下错误消息:“此位置不允许使用注释@XmlElement”时,可能是使用了错误的 import 语句。

将其更改为:

import javax.xml.bind.annotation.XmlElement;

由于Eclipse建议将另一个软件包作为第一个选项,这是一个非常常见的错误。


推荐