2016-10-18 6 views
0

私は、フォルダのres/WSDLを作成し、そこにInterface.wsdlを入れて、次のコマンドのApache CXFとWSDL

wsdl2java -ant -impl -wsdlLocation classpath:wsdl/Interface.wsdl -server -d serverclasses Interface.wsdl 

を使用してサービスを作成しました。私はresフォルダをビルドパスに追加しました。私はプロジェクトを実行するとき

は、しかし、これで失敗します。

Exception in thread "main" com.sun.xml.internal.ws.server.ServerRtException: [failed to localize] cannot.load.wsdl(classpath:wsdl/Interface.wsdl) 
at com.sun.xml.internal.ws.transport.http.server.EndpointImpl.getPrimaryWsdl(Unknown Source) 
at com.sun.xml.internal.ws.transport.http.server.EndpointImpl.createEndpoint(Unknown Source) 
at com.sun.xml.internal.ws.transport.http.server.EndpointImpl.publish(Unknown Source) 

問題はここで何ですか?これを処理する最善の方法は何ですか?注意:私はwsdlからjavaクラスを作成するためにコマンドラインを使用しています。

パッケージ名の1つにキーワードinterfaceが含まれているため、コンパイルできません。それはキーワードとしてではなく、それを扱うようにJavaに指示する方法はありますか?

答えて

0

What is the issue here?

WSDLファイルがサーバーのクラスパスに存在しないようです。クラスパスプロトコルは、wsdlファイルが生成されたjarファイルの内部にある場合に使用されます。 resフォルダを構築パスに置くだけでは不十分かもしれません。 wsdlディレクトリは実行時クラスパス上にある(または生成されたjarの内部に構築されていなければならない)。あなたは、サーバーを起動すると、あなたは(オプションのいずれかを選択)でき

  1. ではなく、あなたのクラスパスプロトコル
  2. の相対ファイルパスを使用し
  3. あなたresディレクトリにクラスパスパラメータpoitingを追加jarファイルを構築するときに、
実際

one of the package names contains the keyword interface and hence will not compile

は、 "インタフェース" であるWSDLフォルダが含まれます予約語として予約語として扱われます。名前空間またはサービス名のカスタムパッケージ名またはクラス名を強制することができます。

+0

eclipseにjarファイルにwsdlフォルダを含めるように指示するにはどうすればよいですか?私はこのオプションを好む。 – rukiman

+0

それは単純なJavaプロジェクト(Mavenや他のオートメーション支援のビルドではない)だと仮定すると、単純にwsdlフォルダをプロジェクトのソースフォルダにコピーしようとするかもしれません。プロジェクトをクリーンビルドし、jarファイルをチェックしてください(私はEclipseプロジェクトを使用していませんが)。 – gusto2

+0

wsdlファイルが見つからないためではないようです。私は絶対的な道を作ったが、まだそれを見つけることができなかった。私はどこかでcxf-rt-frontend-jaws-3.1.7.jarファイルを追加する必要がありましたが、このエラーが発生しました。今すぐjava.util.ServiceConfigurationErrorを取得しました。javax.xml.ws.spi.Provider:プロバイダorg.apache.cxf.jaxws.spi.ProviderImplをインスタンス化できませんでした。たぶん私は別のjarファイルがないかもしれません。 Webサービスに必要なjarファイルは何ですか? – rukiman

関連する問題