不使用set路径或系统变量在cmd中执行Java程序

时间:2011-10-01 14:25:12

标签: java compilation execution

我正在尝试在命令提示符下执行一个简单的java程序(“HelloWorld”),而不使用set path选项或设置系统变量。假设java程序在 D:\ My_Programs 中,java可执行文件在 C:\ Program Files \ Java \ jdk1.6.0_24 \ bin 中。这是我编译的内容: C:\ Program Files \ Java \ jdk1.6.0_24 \ bin> javac D:\ My_Programs \ HelloWorld.java 它正在创建一个.class文件,但执行相同的策略会产生异常: C:\ Program Files \ Java \ jdk1.6.0_24 \ bin> java D:\ My_Programs \ HelloWorld

Exception in thread "main" java.lang.NoClassDefFoundError: D:\My_Programs\HelloW
orld
Caused by: java.lang.ClassNotFoundException: D:\My_Programs\HelloWorld
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: D:\My_Programs\HelloWorld.  Program will exit.

有人可以建议如何执行此文件。 在此先感谢您的帮助。

代码:

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

6 个答案:

答案 0 :(得分:4)

请尝试这个:

C:\Program Files\Java\jdk1.6.0_24\bin>java -cp D:\My_Programs HelloWorld

甚至那个:

C:\anywhere> C:\Program Files\Java\jdk1.6.0_24\bin\java -cp D:\My_Programs HelloWorld

-cp告诉java可执行文件在哪里查找类HelloWorld。提供类似文件的参数D:\My_Programms\HelloWorld,其中Java假定纯包名+类名不起作用。

答案 1 :(得分:2)

由于您在运行javac时位于Java目录而不是程序目录中,因此类文件也可能存在。这通常是一件坏事 - 您希望javacjava位于您的路径中,这样您就可以在程序目录中执行它们。然后,您可以使用java HelloWorld

执行该程序

答案 2 :(得分:0)

你可以尝试这种方式 java -cp“D:\ My_Programs”HelloWorld ,前提条件是你编译的HelloWorld.java是一个主类。

答案 3 :(得分:0)

java -cp D:\My_Programs HelloWorld

因为要考虑类层次结构中的目录层次结构。

答案 4 :(得分:0)

您也可以尝试通过 cd D:\ My_Programs 更改cmd中的目录,然后执行 java HelloWorld 。它会执行文件。唯一的前提条件是类文件应该出现在该位置。

答案 5 :(得分:0)

在cmd中运行.java文件之前,仅将文件重命名为类名,然后它才能工作。例如,在这种情况下,将记事本文件另存为'HelloWorld.java'