1

他のNoClassDefFoundErrorの質問を調べましたが、自分に合った解決策が見つかりませんでした。Eclipse IDEを使用してプログラムを作成していますが、右クリック-> EclipseでJavaアプリケーションとして実行すると正常に実行されますが、コマンドラインから実行しようとすると上記のエラーが発生します。私が使用しているJREは(私が思うに)Java60です。プログラムは、正常に実行されるjavac HelloWorld.javaを使用してコンパイルされ、次にjava-cpを呼び出します。HelloWorldはエラーをスローします。これをトラブルシューティングするための助けをいただければ幸いです。

コードは次のとおりです。

package tool;

public class HelloWorld {

public static void main(String[] args){
    System.out.println("Hello World!");
}

}

「C:\ MADtool \ HostDBtoMADTool \ src\tool」から実行

コマンドラインからの出力は次のとおりです。

C:\MADtool\HostDBtoMADtool\src\tool>java -cp . HelloWorld
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld (wrong nam
e: tool/HelloWorld)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$100(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
4

5 に答える 5

2

実行すると、デフォルトパッケージ$ java HelloWorldのクラスが検索されます。そのようなクラスは存在せず、存在するだけです。HelloWorldtool.HelloWorld

さらに、を実行する$ java tool.HelloWorldと、javaはファイルを見つけようとしますtool/HelloWorld.class。そのため、作業ディレクトリが、それ自体ではなく、を含む ディレクトリであることを確認する必要があります。tool/ tool/

于 2012-05-22T10:32:19.327 に答える
0

comand行からの私の非常に古い経験から私は私のJavaプログラムをコンパイルします:

javac MyClass.java

次に、拡張子を付けてcompilenclassparamを解析して実行してみます。

java MaClass.class

次に、この例外が発生します。拡張子なしでファイル名を解析すると、次のように機能します。

java MyClass
于 2012-05-22T10:02:20.513 に答える
0

クラスパスにいくつかの依存関係がないのではないでしょうか。

つまり、HelloWorldクラスは、クラスパスに含める必要のある他のjarに依存している可能性があります。Eclipseが自動的に実行しますが、コマンドラインを使用して適切なクラスパスを指定する必要があります。

于 2012-05-22T10:03:56.300 に答える
0

パッケージ「tools」を入力してjavac(正しい)を作成しますが、そのパッケージフォルダー内からクラスを開始しようとします(何が問題なのか)。

クラスパスはsource-folderに相対的であるため、最初にsrc-directoryに変更する必要があります。パッケージを使用する場合(実際に行うべきこと)。正しいstart-folderからコードを開始することを確認する必要があります。

C:\MADtool\HostDBtoMADtool\src>java -cp . HelloWorld

更新 クラスパスの定義を見てください:ウィキペディア

于 2012-05-22T10:17:32.500 に答える
0

問題が発生した場合は、完全なコマンドが常に役立つと思います。

C:\MADtool\HostDBtoMADtool\src>java -cp "C:\MADtool\HostDBtoMADtool\src" tool.HelloWorld
C:\MADtool\HostDBtoMADtool\src\tool>java -cp "C:\MADtool\HostDBtoMADtool\src" tool.HelloWorld
于 2013-11-26T22:48:44.980 に答える