3

nexus oss のプラグインを作成しています。ここで、webservice 呼び出しを行うために軸を使用しています。それはスローします

InvocationTargetException : target : java.lang.NoClassDefFoundError: クラス org.apache.axis.client.AxisClient を初期化できませんでした

したがって、この NoClassDefFoundError がスローされたため、nexus が軸の jar ファイルを見つけられないのではないかと心配していました。そのため、nexus が軸 jar を認識しているかどうかを確認するために段階的にデバッグを開始し、デバッグ中にコントロールが軸 jar 内にあることがわかりました (したがって、nexus が軸 jar を認識しないという私の仮定は間違っています)。軸のService.java内に入り、コードは次のようになりました

protected AxisClient getAxisClient() {
    return new AxisClient(getEngineConfiguration());
}

/**
 * Constructs a new Service object - this assumes the caller will set
 * the appropriate fields by hand rather than getting them from the
 * WSDL.
 */
public Service() {
    engine = getAxisClient();
}

行 engine = getAxisClient(); でこの例外をスローしていました。これは実際には return new AxisClient(getEngineConfiguration()); 行にあります。getAxisClient メソッド内。したがって、 axis.jar 内にある service.java を見つけることができれば、axis jar の同じパッケージにある AxisClient クラスを見つけることができない理由はありません。

ですから、この例外の理由を見つけるのを手伝っていただけませんか。

軸 jar は nexus によって取得されませんか? jar が nexus によってフェッチされたかどうかを確認する方法は?

4

1 に答える 1

6

上司は私が答えを見つけるのを手伝ってくれました。

それは実際には commons-logging の問題でした。nexus に commons-logging をロードしました。jetty サーバーで実行されていた nexus 自体に commons-logging があったため、競合が発生しました。ここで、プラグイン記述子から Commons ロギングを削除しました。その後、問題は解決し、プラグインが機能し始めました。

ありがとう 。

于 2013-09-02T05:54:12.617 に答える