jarファイルを特定のクラスファイルに変更して展開した後で、noclassdeffounderrorを取得しています。 私は7zipからjarファイルを抽出したときにjarファイル内のクラスファイルを見ることができます。
.classファイルをコンパイルしてエラーを見つけましたが、何も得られませんでした。
デプロイ中に.classファイルをEclipseの作業領域から既存のjarファイルにドラッグするだけでした。それは重要ですか?
jarファイルがコンパイルされているjdkバージョンは、Eclipseのjre 1.7で実行されているために重要ですが、私のデプロイメント環境はjre 1.6です。
回答:
回答№1は0NoClassDefFoundErrorはクラスが実行時には使用できません。クラスパスにあるか、静的なイニシャライザ(存在する場合)が壊れていないことを確認してください。後では、StackTraceの下のどこかにExceptionInInitializerErrorが表示されます。
jdkのバージョンが重要かどうかについてはあまり確かではありません。
回答№2の場合は0
変更を加えてjarファイルをデプロイした後にnoclassdeffounderrorが表示される 特定のクラスファイルに追加します。
これは、コードが依存しているクラスファイルがあり、コンパイル時には存在するが実行時には見つからない場合に発生します(この回答を見る)。
展開中。Eclipseファイルから.classファイルをドラッグしただけです 既存のjarファイルに保存します。それは重要ですか?
はい、それは重要です。クラスファイルを正しいパッケージフォルダに戻してください。たとえば、パッケージ内のクラス com.foo
フォルダ内にある必要があります com/foo
jarファイルの中にあります。変更されたバージョンは、あなたがjarファイルにドラッグしたときに別の場所に置かれた可能性があります。
jarファイルがコンパイルされているjdkバージョンは、 私は1.7のEclipseで実行していますが、私の展開環境は 1.6?
jarファイル自体はzipファイルなので、jarファイルの内容を圧縮するために使用していたJavaのバージョンは関係ありません。
しかし、既存のjarファイルから単一のクラスを再コンパイルした場合、 する jarファイル内の他のクラスをコンパイルするために使用されたJavaのバージョン。これは、そのクラスがコンパニオンクラスと互換性がないためです。
回答№3の場合は0
私の心の問題は、クラスがjarファイルはJavaの異なるバージョンでコンパイルされています。私はあなたが1.7でコンパイルしたと推測し、12cは1.7を実行していますが、11gは1.6を実行しています。1.6でクラスをコンパイルしてjarに追加するか、1.7でjarを再コンパイルして、 1.7以上。
回答№4の場合-2
これは、jdk 1.6でコードをコンパイルすると完全に機能しました。両方のバージョンでjava.security.SecureClassLoaderが変更されました。それは私がエラーを持っていると思う理由です。