使用WebParam不允许使用XmlElement注释

我在webservice中有一个方法,具有以下签名:

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

在我看来(基于我发现的信息),这应该工作。 不幸的是,我在编译时收到以下错误消息:

 The annotation @XmlElement is disallowed for this location 

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

默认情况下,JAX-B包含在JDK中。 特定JDK附带的版本几乎不像JAX-B本身那样频繁更新。 JDK(1.6)附带的当前版本是JAX-B 2.1.10( 此处记录 )。

@XmlElement仅允许在以JAX-B 2.2开头的方法参数上

当Java加载库时,它会在加载类路径上的库之前加载JDK附带的库。 上传到Java 7将解决您的问题。 如果您无法升级到Java 7,还有一个告诉Java您想要使用更新库的过程。这些被称为“认可”库,您必须将库放在同一个库中文件夹结构为JDK本身。 这里描述了该过程。

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

将其更改为:

 import javax.xml.bind.annotation.XmlElement; 

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