Java 如何执行HelloWorld脚本

Java 如何执行HelloWorld脚本,java,cmd,Java,Cmd,我目前正在尝试运行我的第一个java脚本: public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); } } 我决定稍微研究一下Java。然而,我来自像JavaScript和PHP这样的语言,它们不需要任何编译或类似的东西 到目前为止,我认为我在命令提示符下正确编译了它: C:\Users\Shawn>"C:\P

我目前正在尝试运行我的第一个
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"
我发现,
错误:无法找到或加载主类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
javac:无效标志:C:\Users\Shawn\HelloWorld.class
用法:javac
使用-help获取可能选项的列表

为什么会这样?为什么我的程序不能正确执行?

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

当您传递
HelloWorld.class
时,它会在包
HelloWorld中查找名为
class
的类。

(那将是
/HelloWorld/class.class


您需要传递
HelloWorld

,正如其他人指出的那样,参数必须只是类名,而不带扩展名
.class
。不过,还必须满足第二个要求:类文件必须位于

通常不建议(尽管方便)在全局类路径中包含当前目录,但您可以在命令行中重写它:

java -cp . HelloWorld
还可以指定显式路径:

java -cp "C:\Users\Shawn" HelloWorld
如果Java程序使用其他类,请包含如下全局类路径:

java -cp "%CLASSPATH%;." HelloWorld
有关更多信息,请参阅下面的javac。特别是关于交叉编译选项的部分。

“C:\Program Files\Java\jdk1.7.0\u 25\bin\Java.exe”HelloWorld