Webサービス内に、次の署名を持つメソッドがあります。
@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-B2.2以降のメソッドパラメータでのみ許可されます
Javaがライブラリをロードすると、クラスパスにあるライブラリをロードする前に、JDKに付属のライブラリがロードされます。Java 7にアップグレードすると、問題が修正されます。また、Java 7にアップグレードできない場合は、より最新のライブラリを使用することをJavaに通知するプロセスでもあります。これらは「承認済み」ライブラリと呼ばれ、ライブラリをJDK自体と同じフォルダ構造に配置する必要があります。プロセスについて説明します ここ 。
次のエラーメッセージが表示される場合: "この場所ではアノテーション@XmlElementは許可されていません"、間違ったインポートステートメントを使用している可能性があります。
次のように変更します。
import javax.xml.bind.annotation.XmlElement;
Eclipseが最初のオプションとして別のパッケージを提案しているので、それは非常によくある間違いです。