web-dev-qa-db-ja.com

JARとしてパッケージ化した後、SAAJメタファクトリを作成できません

アプリケーションをテストするために、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にパッケージ化した後でこのクラスが見つからない理由については、私は絶対に無知です。ヒントや指示は非常に高く評価されます。

12
Hakello

次の 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という名前のパッケージが機能するパッケージであることは非常に奇妙です。とにかく、それは動作します。

14
Manoel Campos