4

Webサービスクライアントプロジェクトでwsimportを使用して、wsdlファイルに基づいてアーティファクトクラスを生成しています。wsdlLocation属性を使用して、wsdlファイルをローカルで参照しようとしています。生成されたサービスは、サービスクラスが存在するパッケージへのパスとwsdlLocation属性の値に基づいてURLを作成しようとします。

問題は、生成されたサービスクラスがclass.getResource(".")現在のディレクトリ(サービスクラスがあるパッケージ/ディレクトリ)へのパスを取得するために使用していることです。アプリケーションが(私の場合のように)jarにパッケージ化されている場合、このコードはnullを返します。class.getResource( "")が実際には正しいパスを返すことに気づきましたが、生成されたコードを変更することは醜い解決策のようです。前のコードが(意図したとおりに)生成されたサービスクラスが存在するパッケージ/ディレクトリへのパスを返すように、クラスパスを設定する方法があるかどうか疑問に思いましたか?

ありがとうございました

4

3 に答える 3

2

jar ファイル内のディレクトリへの URL を取得できなかった理由は、jar ファイルの作成時に「ディレクトリ エントリの追加」オプションを有効にするのを忘れたためです。

Eclipse を使用して jar ファイルを作成した場合は、「ディレクトリ エントリの追加」オプションを有効にするだけです。

jdk jar コマンドを使用する場合、オプションはデフォルトで有効になっていると思います。

WinZip、7zip、WinRar などの通常の zip クリエーターは使用しないでください。このオプションがあるとは思えません。

于 2013-03-11T16:20:06.703 に答える
0

デフォルトの相対パスベースのアプローチが必要ない場合に備えて、任意の場所を指すようにwsdlQNameを変更するオプションがあるため、安心できます。

IMHO 生成されたコードを変更しない理由はわかりませんが、コードを再生成するたびに変更するという苦痛が生じます。

于 2011-12-06T11:22:18.163 に答える