したがって、コマンド プロンプトからパッケージに含まれていない Java クラスを開こうとすると、すべて正常に動作しますが、パッケージに含まれるクラスを開こうとすると、NoClassDefFoundError が返されます。そして、クラス(Java somepackage/someclass)を開こうとしたときにパッケージをリストすると、メインクラスをロードまたは検索できないと表示されます。
何か助けはありますか?
私が推測できるのは、次の 2 つのクラスがあるということです。
テスト.java:
// no package defined here
class Test{
public static void main(String[] args){
System.out.println("Test");
}
}
したがって、次を使用してコンパイルして実行できます。
javac Test.java
java Test
別のクラス:
テスト.java:
package test; // package defined here
class Test{
public static void main(String[] args){
System.out.println("Test");
}
}
したがって、同じことを行うとエラーが発生します。このためには、ターミナルまたはコマンドの「test」フォルダーの親ディレクトリにいて、次を使用する必要があります。
java test.Test
コンパイラに問題はありません。「test」フォルダー内から javac Test.java を使用して、通常どおりコンパイルできます。
NoClassDefFoundError は、JVM が実行時にクラスを見つけられないことを意味します。これは、表示されていない (private または protected に設定されている、またはアクセス修飾子が設定されていない) ことが原因である可能性があります。
ビルドパスにない可能性もあります