我正在尝试从命令行运行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中有很多类。这会导致任何问题吗?
答案 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