web-dev-qa-db-ja.com

XmlElementアノテーションはWebParamで許可されていません

Webサービス内に、次の署名を持つメソッドがあります。

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

私には(私が見つけた情報に基づいて)これがすべき機能しているように見えます。残念ながら、コンパイル時に次のエラーメッセージが表示されます。

The annotation @XmlElement is disallowed for this location

誰かが問題を解決する方法を知っていますか?

16
MW.

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自体と同じフォルダ構造に配置する必要があります。プロセスについて説明します ここ

33
Pace

次のエラーメッセージが表示される場合: "この場所ではアノテーション@XmlElementは許可されていません"、間違ったインポートステートメントを使用している可能性があります。

次のように変更します。

import javax.xml.bind.annotation.XmlElement;

Eclipseが最初のオプションとして別のパッケージを提案しているので、それは非常によくある間違いです。

1
Thiago Pasa