1

私の質問を見てくれてありがとう。

一度に 1 つのサーバーのみに配布することを目的とした Java WAR ファイルを開発しています。これまでのところ、Debian、Ubuntu、および開発中の Windows マシンの 3 つの異なるサーバーでテストして成功しました。

最終展開サーバーでは、何らかの理由でアプリが正常に展開され、起動するたびに約 3 分間正常に実行されます。データベース接続が機能し、すべて正常に動作します。ただし、3 分後、アプリが DB にアクセスしようとするたびに、一貫して NoClassDefFoundError が表示されるようになります。

私は次のライブラリで、すべてが WAR ファイルにパッケージ化されています。

Mysql/j コネクタ、最新バージョン ActiveObjects、0.8.2 Jasorb 1.3 Jython 2.5.1 (一部のスクリプト用) Tomcat 6.0.20 mod_python Apache

エラー:

スレッド「Timer-4」の例外 java.lang.NoClassDefFoundError: com.mysql.jdbc.Util.handleNewInstance(Util.java:430) の com/mysql/jdbc/SQLError com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl) .java:352) で com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:284) で java.sql.DriverManager.getConnection(DriverManager.java:582) で java.sql.DriverManager.getConnection(DriverManager.java: 185) net.java.ao.DatabaseProvider.getConnectionImpl(DatabaseProvider.java:771) で net.java.ao.DatabaseProvider.getConnection(DatabaseProvider.java:734) で net.java.ao.EntityManager.find(EntityManager.java) :666) net.java.ao.EntityManager.find(EntityManager.java:607) で net.java.ao.EntityManager.find(EntityManager.java:579) com.sq.sa.SAPushAlertsTask.run(SAPushAlertsTask.java:32) で java.util.TimerThread.mainLoop(Timer.java:512) で java.util.TimerThread.run(Timer.java:462) で投稿者: java.lang.ClassNotFoundException: org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:138 7) の com.mysql.jdbc.SQLError org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader. java:123 3) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) ... 13 詳細WebappClassLoader.loadClass(WebappClassLoader.java:138 7) で org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:123 3) で java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) ... 13もっとWebappClassLoader.loadClass(WebappClassLoader.java:138 7) で org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:123 3) で java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) ... 13もっと

4

1 に答える 1

1

MySQL / Jコネクタが何らかの理由で壊れているか、(より可能性が高い) MySQLのJDBCドライバのクラスの一部のみを含む別のjarがクラスパスにあります。いずれにせよ、「com / mysql / jdbc/SQLError」クラスが見つかりません。

アプリケーションは最初の数分間は正常に実行されますが、エラーが発生すると、上記のクラスをロードできず、投稿されたとおりに例外がスローされます。クラスパス全体(CLASSPATH環境変数+tomcatのlib+ webappのlib)をチェックし、a)実際にSQLErrorが含まれているかどうか、およびb)MySQLJDBCドライバーが複数回発生していないかどうかを確認します。

上記が修正されると、これを引き起こしている実際のエラーが発生し、そこから取得できるはずです。

于 2009-10-13T19:12:44.953 に答える