从命令行运行Java程序

时间:2010-10-27 15:04:04

标签: java windows

我正在尝试从命令行运行java程序。我尝试按照here提到的步骤进行操作。但是当我尝试运行javac Hello.java时,它会抛出这样的程序不存在的错误。我尝试给java Hello.java并收到错误:

Exception in thread "main" java.lang.NoClassDefFoundError: Hello/java
Caused by: java.lang.ClassNotFoundException: Hello.java
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: Hello.java.  Program will exit.

这里有什么问题。我该怎么办?

编辑:我的代码文件Hello.java中有很多类。这会导致任何问题吗?

5 个答案:

答案 0 :(得分:6)

首先,你应该用

编译java代码
 javac Hello.java

然后运行它

 java Hello

在这两种情况下,请确保您的类路径设置正确...

答案 1 :(得分:5)

要运行您需要执行的程序:

java Hello

java后跟类名,不带扩展名

答案 2 :(得分:3)

首先,java每个文件最多需要一个公共类。否

public class this {
}

public class that {
}

你可以拥有

class this {
   class that {
   }
}

如果你需要。

编辑或存档this.java:

public class this {
}

class that {
}

javac不会出现在jre文件夹中。你安装了jdk吗?它在许多计算机上默认不会出现。它通常位于“C:\ Program Files \ Java \ jdk1.6.0_05 \ bin \ javac.exe”或类似的路径中。

答案 3 :(得分:1)

正如其他人的回答所述,首先,您必须使用java Hello而非java Hello.java

运行您的应用程序

其次,您必须检查您的CLASSPATH是否已正确设置。您的变量似乎未设置或未集成当前目录,即.

所以跑:

javac -classpath . Hello.java
java -classpath Hello

set CLASSPATH=.
javac Hello.java
java Hello

当然,在Windows系统中将CLASSPATH定义为用户/系统变量是一个更好的解决方案!

答案 4 :(得分:1)

如果包中包含Hello.java,则必须创建适当的目录结构。即如果Hello.java包含在com.stackoverflow包中,您必须创建文件夹com/stackoverflow并将Hello.java放入此文件夹中。然后,您必须从根文件夹启动

java com.stackoverflow.Hello