0

現在、Java と、コマンド プロンプトをコンパイラとして使用する方法を学習しています。しかし、 javaコマンドに続いてテスト クラス "Hello"を実行するたびに、以下のエラー メッセージが表示されます。

Exception in thread "main" java.lang.NoClassDefFoundError: Hello (wrong name: hello/Hello)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:792)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)

「CLASSPATH」環境変数を確認したところ、次のように正しいです: .;C:\Program Files\Java\jdk1.7.0_25\bin; .;を削除しようとしました。CLASSPATH の最初からですが、何も違いはありませんでした。これで、.java クラスの .class バージョンを作成することで、 javacコマンドが問題なく動作するようになりました。しかし、実際にJavaコマンドを実行することはできません。

私のクラスの名前はHelloなので、javac Hello.javaと入力してファイルをクラスファイルとしてコンパイルすると、うまくいきました。しかし、次のように入力すると、上記のエラー メッセージが表示されます作成した NetBeans IDE でプログラムをテストしましたが、エラーなく完全に正常に動作します。

java コマンドを実行して .class ファイルを実行できない原因は何ですか?

4

3 に答える 3

5

私のクラスの名前は Hello なので、 javac Hello.java と入力してファイルをクラスファイルとしてコンパイルすると、うまくいきました。しかし、私が入力すると:Java Hello

最も可能性の高い問題は、Java プログラムの実行中に、パッケージ構造とともに完全なクラス名を入力していないことです。ここに記載されているように実行する必要があります。

java packagenhierarchy.Hello 

com.my.helloパッケージ名がであり、メイン クラス名が であると仮定するとHello、最上位パッケージを含むディレクトリから次のように実行する必要があります。

java com.my.hello.Hello

更新:コメントに従って、作業ディレクトリを知っているので、実行する必要があるのは次のとおりです。

java -cp C:\hello\src\hello hello.Hello
于 2013-08-07T03:41:44.973 に答える