Tomcatにデプロイした.warファイルで、ビルド中に存在していたライブラリでNoClassDefFoundErrorが発生します。
私の.warはAntビルドスクリプトで作成されています。スクリプトには、.m2リポジトリの.pomから依存関係を取得し、それらをWEB-INF / libフォルダーに配置するカスタムターゲット(オフィスの新しいプロジェクトツールによって自動的に作成される)であると私が信じているものがあります。それらのライブラリの1つは、私がプログラミングを支援し、Mavenを使用して自分のマシン上に構築したライブラリです。歴史的な理由から、この新しいプロジェクトではAntを使用する必要があります。そのため、私はこのようにしています。
.warは正常にビルドされます。すべてのクラスが見つかりました。私はそれをtomcatにデプロイし、唯一のサーブレットコマンドを実行すると、現時点ではほとんど実行されませんが、以前に作成した.jar内のいくつかのクラスを呼び出すと、次のようになります。
exception
javax.servlet.ServletException: Servlet.init() for servlet InitLDAP threw exception
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
java.lang.Thread.run(Thread.java:619)
root cause
java.lang.NoClassDefFoundError: Could not initialize class com.myjarlibrary.ConnectionAgent
com.mywarservice.MyServlet.init(MyServlet.java:45)
javax.servlet.GenericServlet.init(GenericServlet.java:212)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
java.lang.Thread.run(Thread.java:619)
理由はわかりません。
Java6を使用して.jarと.warの両方をビルドしています。Tomcatバージョン6.0.29。.jarライブラリが呼び出されるのMyServlet.java:45
はこれが初めてですが、最初に呼び出される別のライブラリがあります(log4jのみ)。フォルダを確認するwebapps
と、ライブラリが本来あるべき場所にあることがわかります。他の誰かの非常に似た.war(同じ依存関係、同様にコードスパース)は同じTomcatで問題なく動作しますが、ライブラリのようにAntではなくMavenで構築されていない限り、関連する違いを見つけることができませんでしただった。
何がうまくいかない可能性がありますか?