Windows コマンド ラインから Java アプリを実行する方法を学習しようとしていますが、1 つの問題がわかりません。
デスクトップに単純なクラスがあります。
public class Hello{
public static void main(String[] args){
System.out.println("1, two, three");
}
}
cmd でデスクトップ ディレクトリにいるときにコマンドを実行するjavac
とjava
、すべて問題ありませんが、1 つ前のディレクトリに戻ると (したがって、.java および .class ファイルと同じディレクトリにはなりません)、cmd ディレクトリでC:\Users\Tomas
あり、私の Hello.java および Hello.class ファイルは にありC:\Users\Tomas\Desktop
ます。コマンドを実行すると動作しますが、実行javac Desktop\Hello.java
しようとするjava Desktop\Hello.java
とException in thread "main" java.lang.NoClassDefFoundError: Desktop\Hello (wrong name: Hello)
.
コンパイル時にクラスが利用可能だったときに NoClassDefFoundError がスローされることは知っていますが、ClassLoader は実行時にクラスを見つけることができません (ここで良い記事を見つけました)。問題は CLASSPATH 変数に関係していると思うので、次のように設定しました。
"C:\Program Files\Java\jdk1.7.0_21\jre\lib\ext";.;"C:\Program Files\Java\jdk1.7.0_21\jre\bin";"C:\Users\Tomas\Desktop"
(すべてを試すために「C:\ Users\Tomas\Desktop」を含めました)そして、-classpathおよび-cpオプションを指定して「java」コマンドを実行してみました:
java -classpath "C:\Program Files\Java\jdk1.7.0_21\jre\lib\ext";.;"C:\Program Files\Java\jdk1.7.0_21\jre\bin";"C:\Users\Tomas\Desktop" Desktop\Hello
そして、私は同じ例外を受け取り続けます。誰かが私のエラーとなぜこれが起こっているのかを説明できれば、私は素晴らしいことではありません.
ありがとうございました。