私はこの特定のエラーメッセージを以前に見たことがありませんでしたが、それが意味することについて少し説明して、考えられる原因の1つを挙げることができます。
ライン
java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.ejb.Ejb3Configuration
は、JVMがクラスorg.hibernate.ejb.Ejb3Configuration
を見つけることができなかったことを意味するものではありません。これは、JVMがこのクラスを見つけることができますが、すでにこのクラスをロードしようとしましたが失敗したことを意味します。
これが起こったことを示すテキストはCould not initialize class ...
です。 - Javaの5に対応する例外はありませんがあり
java.lang.NoClassDefFoundError: org/hibernate/ejb/Ejb3Configuration
さておき、それはまたあなたは、Java 6を使用している手段として:JVMがすべてのクラスを見つけることができなかった場合は、代わりに次のようなものを取得したいですメッセージ。
次の2つのクラスは、この動作のデモンストレーションを提供します。静的イニシャライザは常に例外をスローするため、クラスUnloadable
はロードできません。このクラスを読み込み、その結果であるExceptionInInitializerError
をキャッチして、Unloadable
を再度ロードしようとします。
class Unloadable {
static {
if (true) { throw new RuntimeException(); }
}
}
public class LoadingTest {
public static void main(String[] args) throws Exception {
try {
Class.forName("Unloadable");
}
catch (ExceptionInInitializerError e) {
try {
Class.forName("Unloadable");
}
catch (NoClassDefFoundError e2) {
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
e2.printStackTrace(System.out);
}
}
}
}
私はクラスLoadingTest
を実行すると、私は次のような出力が得られます。
XXXXXXXXXXXXXXXXXXXXX
java.lang.NoClassDefFoundError: Could not initialize class Unloadable
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at LoadingTest.main(LoadingTest.java:14)
私は失敗するorg.hibernate.ejb.Ejb3Configuration
をロードするために、元の試みを引き起こしているものを言うことはできません。 Ejb3Configuration
自体がクラスパスから欠落しているクラスに依存している可能性があります。 import
がEjb3Configurationで編集され、java.*
またはjavax.*
以外のすべてがGlassfishとNetbeansが見ることができるJAR内にあることを確認することは価値があるかもしれません。
また、JVMがロードしようとしている理由は、Ejb3Configuration
となり、の2回だけです。クラスのロードが初めて失敗すると、例外(通常はサブクラスの一部がLinkageError
)がスローされます。私の最高の推測では、次のような何かが起こっているということですので、このタイプの例外は、多くの場合、キャッチされていません。
try {
// Some code that loads Ejb3Configuration and fails.
}
finally {
// Some code that also loads Ejb3Configuration and fails.
}
finally
ブロック内のコードが例外をスローした場合、この例外がでスローされた例外を置き換えますtry
ブロック。似たようなことがthis questionで起こったので、私はこれを提案します。この質問に掲載されたスタックトレースは、finally
ブロック内にあります。
まだ私の答えがあなたを助けない場合は、見ているスタックトレース全体を投稿してください。
実際にLog4J構成になっているように見えますが、これはサーバーを最初に再起動したとき以外はスタックトレースには記載されていません。 –