次のクラスで ClassNotFoundException を取得しています。
org.apache.commons.pool.impl.CursorableLinkedList$Cursor.
EAR にパッケージ化された Web アプリを確認したところ、上記のクラスが存在するライブラリが 2 つあることに気付きました (CursorableLinkedList)。
JAR ファイルは次のとおりです。
1.) com.ibm.ws.jpa.jar
2.) commons-pool-1.4.jar
プロジェクト固有の JAR ファイル (commons-pool-1.4.jar) は、libディレクトリの WAR ファイルにパッケージ化されています。
環境
EAR は Websphere Applicatoin Server 8 にデプロイされています。使用している IDE は Rational Application Developer 8 です。
Application Deployment を次のように設定しました:
Application :
myApp.EAR
- クラスローダーモード: Parent_First
- WAR クラスローダ ポリシー : MODULE
- 開始重量: 10
- 自動開始: はい
myApp.WAR
- クラスローダーモード: PARENT_FIRST
- 開始重量: 10000
上記の設定では、ClassNotFoundException が発生する場合と発生しない場合があります。不適切なクラスのロードが原因で後で発生する可能性のある他のエラーがあると思われるため、このエラーをもう発生させたくありません。プロジェクト固有のライブラリが最初に読み込まれるように、適切な展開設定を設定するのを手伝ってくれる人はいますか?