如何执行我的HelloWorld脚本

时间:2013-07-21 02:59:07

标签: java cmd

我目前正在尝试运行我的第一个java脚本:

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

我决定稍微研究一下Java。但是,我来自JavaScript和PHP之类的语言,不需要任何编译或任何其他内容。

到目前为止,我认为我正在命令提示符中正确编译它:

C:\Users\Shawn>"C:\Program Files\Java\jdk1.7.0_25\bin\javac.exe" "HelloWorld.java"

它添加了一个名为HelloWorld.class的文件,因此我认为我做得对。

但是,现在当我尝试使用以下命令实际运行程序时

C:\Users\Shawn>"C:\Program Files\Java\jdk1.7.0_25\bin\java.exe" "C:\Users\Shawn\HelloWorld.class"

我明白了,Error: Could not find or load main class C:\Users\Shawn\HelloWorld.class

但是,如果我尝试使用相同的命令但使用javac.exe,我会得到:

javac: invalid flag: C:\Users\Shawn\HelloWorld.class
Usage: javac <options> <source files>
use -help for a list of possible options

为什么会这样?为什么我的程序没有正确执行?

3 个答案:

答案 0 :(得分:9)

java命令采用的名称,而不是文件名。
然后,它使用Java类加载器在当前目录或类路径中查找该类的.class文件。

当您通过HelloWorld.class时,它会在包class中查找名为HelloWorld.的班级 (那将是./HelloWorld/class.class

您需要传递HelloWorld

答案 1 :(得分:0)

正如其他人指出的那样,论证必须只是类名,没有扩展名.class。但是必须满足第二个要求:类文件必须位于classpath

通常不建议(虽然方便)将当前目录包含在全局类路径中,但您可以在命令行上覆盖它:

java -cp . HelloWorld

您还可以指定显式路径:

java -cp "C:\Users\Shawn" HelloWorld

如果您的Java程序使用其他类,请包括如下所示的全局类路径:

java -cp "%CLASSPATH%;." HelloWorld

答案 2 :(得分:0)

有关详细信息,请参阅以下javac documentation。特别是关于交叉编译选项的部分。