アプリケーションをテストするために、SOAPメッセージを作成しています。これはEclipse(Oxygen.1a)から直接実行した場合に機能しますが、実行可能なjarとしてパッケージ化した後(オプション:必要なライブラリーを生成されたjarにパッケージ化)次のエラー:
javax.xml.soap.SOAPException: Unable to create SAAJ meta-factoryProvider com.Sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl not found
at javax.xml.soap.SAAJMetaFactory.getInstance(SAAJMetaFactory.Java:94)
at javax.xml.soap.MessageFactory.newInstance(MessageFactory.Java:138)
引き起こされた:
MessageFactory factory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);
MessageFactoryがSunパッケージを使用していることを理解しています
static private final String DEFAULT_META_FACTORY_CLASS =
"com.Sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl";
しかし、実行可能なJARにパッケージ化した後でこのクラスが見つからない理由については、私は絶対に無知です。ヒントや指示は非常に高く評価されます。
次の dependency をプロジェクトに追加しました:
<dependency>
<groupId>com.Sun.xml.messaging.saaj</groupId>
<artifactId>saaj-impl</artifactId>
<version>1.5.0</version>
</dependency>
次に、次の行を含むファイルMETA-INF/services/javax.xml.soap.SAAJMetaFactory
を作成して、SAAJファクトリクラスの完全修飾名を提供しました。
com.Sun.xml.messaging.saaj.soap.SAAJMetaFactoryImpl
javax.xml.soap.saaj-api は放棄されているようです。そして、com.Sun
という名前のパッケージが機能するパッケージであることは非常に奇妙です。とにかく、それは動作します。