0

Windows コマンド ラインから Java アプリを実行する方法を学習しようとしていますが、1 つの問題がわかりません。

デスクトップに単純なクラスがあります。

public class Hello{
    public static void main(String[] args){
        System.out.println("1, two, three");
    }
}

cmd でデスクトップ ディレクトリにいるときにコマンドを実行するjavacjava、すべて問題ありませんが、1 つ前のディレクトリに戻ると (したがって、.java および .class ファイルと同じディレクトリにはなりません)、cmd ディレクトリでC:\Users\Tomasあり、私の Hello.java および Hello.class ファイルは にありC:\Users\Tomas\Desktopます。コマンドを実行すると動作しますが、実行javac Desktop\Hello.javaしようとするjava Desktop\Hello.javaException 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

そして、私は同じ例外を受け取り続けます。誰かが私のエラーとなぜこれが起こっているのかを説明できれば、私は素晴らしいことではありません.

ありがとうございました。

4

3 に答える 3

1

クラス

package Desktop;

public class Hello{
    public static void main(String[] args){
        System.out.println("1, two, three");
    }
}

コンパイル(ここでDesktopは標準のWindowsディレクトリを意味します)

javac Desktop\Hello.java

実行 (ここでDesktoppackage.Desktop/Helloが完全なクラス名であることを意味します)

 java Desktop/Hello
于 2013-07-23T17:39:08.787 に答える
0
java -classpath 'C:\Users\Tomas\Desktop\Hello.class'

実行する必要があります。

于 2013-07-23T17:41:06.563 に答える
0

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" こんにちは

クラス名からデスクトップのみを削除しました。

于 2013-07-23T17:42:24.403 に答える