我在webservice中有一个方法,具有以下签名:
@WebResult(name="purchaseId") public int CreatePurchase(
@XmlElement(required=true)
@WebParam(name = "item") String item {
...
}
在我看来(根据我发现的信息),这个应该工作。不幸的是,我在编译时收到以下错误消息:
The annotation @XmlElement is disallowed for this location
有谁知道如何解决这个问题?
答案 0 :(得分:33)
JAX-B默认包含在JDK中。特定JDK附带的版本几乎不像JAX-B本身那样频繁更新。 JDK(1.6)附带的当前版本是JAX-B 2.1.10(记录为here)。
@XmlElement仅允许在以JAX-B 2.2开头的方法参数
上当Java加载库时,它会加载JDK附带的库,然后加载类路径上的库。向Java 7上传可以解决您的问题。如果您无法升级到Java 7,还有一个告诉Java您想要使用更新库的过程。这些被称为“认可”库,您必须将库放在同一个库中文件夹结构为JDK本身。该过程描述为here。
答案 1 :(得分:1)
如果您收到以下错误消息:" 此位置不允许使用注释@XmlElement ",您可能会使用错误的导入语句
将其更改为:
import javax.xml.bind.annotation.XmlElement;
由于Eclipse建议将另一个软件包作为第一个选项,因此这是一个非常常见的错误。