0

Windows 764ビット上のJBOSS7.1でホストされるサーブレットを作成する顧客がいます。サーブレットは、開発したjarファイルのJavaクラスを使用します。私たちのクラスの1つは、sun.awt.DisplayChangedListenerインターフェースを利用します。問題は、サーブレットが呼び出されたときにDisplayChangedListenerを使用するクラスからNoClassDefFoundError例外が発生し、DisplayChangedListenerが根本的な原因であるということです。DisplayChangedListenerも存在する同じrt.jarファイル内の他の多くのクラスに問題はありません。プロセスエクスプローラーを使用して、JBOSSプロセスがロードするjarファイルを確認します。rt.jarファイルは1つだけです。Javaを使用して同じコードを直接実行する場合、問題はありません。rt.jarファイルのコピーをJBOSSにデプロイされたservletアプリケーションのローカルリポジトリに配置しても、問題はありません。私は太陽の下でクラスを知っています。awt名前空間は開発者によってではなく内部で使用されることになっており、JBOSSクラスローダーはそれらの使用に関する制限を強化しているようです。rt.jarのローカルコピーがなくても、DisplayChangedListenerインターフェイスの使用を放棄せずに(構成ファイルの設定などで)動作させる方法はありますか?

助けてくれてありがとう。

4

1 に答える 1

0

私が推奨する手順は次のとおりです。

  1. 新しいモジュールを作成する
  2. 次の依存関係を追加します(必要なパッケージを編集して)
    ...
       <依存関係>
       <system export="true">
         <パス>
           <パス名="com/sun"/>
           <パス名="com/sun/net/ssl/internal/ssl"/>
         </パス>
       </システム>
       <モジュール名="javax.api"/>
       <モジュール名="org.apache.log4j"/>
       <module name="sun.jdk" export="true"/>
     </依存関係>

  1. アプリケーションをモジュールに依存させます。
于 2012-11-08T18:20:09.440 に答える