私はこのシナリオを持っています:
- //Tomcat7/webapps/app1/WEB-INF/classes/a/b/c/A.class
- //Tomcat7/webapps/app1/WEB-INF/classes/a/b/c/B.class
- //Tomcat7/webapps/app2/WEB-INF/classes/a/b/c/B.class (クラスは異なるが<2>と同じ名前)
- //Tomcat7/webapps/app2/WEB-INF/classes/a/b/c/C.class
注: クラス ディレクトリの階層は同じで、クラス ファイルが異なるだけです。
app1 のログ ファイルには、 A.class の NoClassDefFoundError が含まれています。ディレクトリを確認したところ、クラスファイルは間違いなくそこにあります。今、ClassLoader が A.class ではなく B.class のみをロードした可能性があるかどうかを調べようとしていますが、webapps ごとに ClassLoader が必要です。つまり、2 つの ClassLoader を意味しますか?
これがどのように機能するかについてのアイデアはありますか?
編集: Tomcat7 は Tanuki JWS 経由で起動されます。wrapper.log から、app2 が最初に初期化され、次に app1 のみが初期化されていることがわかります。
よろしく、 アラン