1

JBoss 5 スタートアップ (run.bat/run.sh) ファイルの CLASSPATH に .jar ファイルを追加しました。これは、サーブレット ベースのアプリケーションから参照される依存関係の jar です。このセットアップを使用すると、サーブレットは正常にロードされ、期待どおりに動作します。ただし、サーブレットの WEB-INF/lib ディレクトリに同じ jar がある場合、次のようにクラス キャスト例外が発生することに注意してください。

ERROR [STDERR] ERROR: com.idoox.wasp.ProtocolRepositoryImpl - Exception in protocolHandler soap, protocolHandler com.server.saaj.soap.SOAP11ProtocolHandler, class space root.wasp-impl.SOAP : 
ERROR [STDERR] EXCEPTION: 
ERROR [STDERR] com.systinet.saaj.soap.SOAP11ProtocolHandler cannot be cast to org.idoox.wasp.ProtocolHandler 
ERROR [STDERR] java.lang.ClassCastException: com.server.saaj.soap.SOAP11ProtocolHandler cannot be cast to org.idoox.wasp.ProtocolHandler 

私は両方の場所に瓶を持っていないので、これは問題ではありませんが、なぜこのように起こっているのか疑問に思っています. これはクラスの読み込みの問題ですか?

ありがとうございました。

4

1 に答える 1

1

あなたが言及しているjarファイルは、JBoss. に配置する場所WEB-INF/lib; JBoss はすでに JBoss で利用可能な からクラスをロードしており、フォルダー内jarのクラスと競合しています。web-infクラスが同じであっても、異なるクラスローダによってロードされたクラスは異なるものとして扱われます。
屈服すると、ロードされるファイルrun.batは 1 つだけです。jarJBoss はこれをロードし、競合する jar はありません。

于 2012-09-25T04:33:28.303 に答える