8

私は、このApache CXF Web Service Developmentの本を参考にして CXF を学んでいますが、残念ながら、本のサンプル プロジェクトの 1 つがコンパイルすらできません!

問題のコードは第 3 章のものであり、本のサポート サイトcontractfirstからダウンロードしたソース コードをそのまま使用しているため、タイプミスの問題ではありません。

3 つのコンパイル エラーは、実際には 1 つの問題を示しています。

Chapter3\contractfirst\src\demo\order\OrderProcessService.java:52: cannot find symbol
symbol: constructor Service(java.net.URL,javax.xml.namespace.QName,javax.xml.ws.WebServiceFeature[])
location: class javax.xml.ws.Service
super(WSDL_LOCATION, SERVICE, features);
^

ファイル OrderProcessService.java 内。

最初の再検索では、これはJAX-WS 2.2 と 2.1の問題である可能性があることが示唆されていますが、この ANT ベースのコンパイル環境で JAX-WS 2.2 を「承認」する方法がわかりません。

を配置しようとjaxws-api.jar%JAVA_HOME%\lib\endorsed、そのjarをプロジェクトのライブラリリストに追加しようとしましたが、何も役に立たなかったようです。

私はMavenを使用していないため、依存関係としてリストすることさえできず、これが魔法のように解決されることを願っています。

この問題を解決する方法はありますか? この非常に単純なプロジェクトをビルドできるようにするには?

4

3 に答える 3

15

あなたの説明からすると、これはこの投稿で説明されている問題に似ています。

この問題を回避するには、単純jaxb-api.jarjaxws-api.jarを JDK の JRE に コピーします。/lib/endorsed

「承認」とは、関連する JAR ファイル (この場合は jaxb-api.jar、jaxws-api.jar) を配置することを意味することに注意してください%JAVA_HOME%\jre\lib\endorsed(パスの に注意してくださいjre)。JDK のlibディレクトリの直下にendorsedディレクトリを作成しないでください。

または... JDK インストールに触れたくない場合は、これらの環境変数を使用して wsimport と wsgen を使用します (JAXWS_HOME は JAX-WS 2.1 インストールを指します)。

WSIMPORT_OPTS=-Djava.endorsed.dirs=%JAXWS_HOME%/lib
WSGEN_OPTS=-Djava.endorsed.dirs=%JAXWS_HOME%/lib

または... Ant タスクを使用する場合は、-Djava.endorsed.dirs=%JAXWS_HOME%/libwsimport および wsgen Ant タスクを呼び出すときに jvmarg として渡すことができます (これを機能させるには、wsimport および wsgen Ant タスクの fork="true" 属性を設定する必要があります)。

クレジットはRama Pulavarthiに行きます。

于 2013-01-03T18:23:40.437 に答える
0

%JAVA_HOME%\jre\lib\endorsedにwebservices-api-2.2.jarを単独で追加すると、問題が解決しました。

于 2014-05-22T10:52:38.313 に答える
0

jaxws-api jar の 2.2 バージョンを承認すると機能するはずです。「-fe jaxws21」フラグを CXF wsdl2java コマンドに渡して、代わりに 2.1 互換コードを生成することもできます。

于 2013-01-03T01:28:11.047 に答える