当我尝试从 DOS 执行以下程序时,我得到以下结果..
以下程序位于 C:\Users\Apostolos\Documents\NetBeansProjects\Java1\src\java1
package java1;
public class MyProgram{
public static void main(String[] args){
System.out.println("Rome wasn’t burned in a day!");
}
}
javac MyProgram.java
工作正常
但是 java MyProgram
给出以下内容:
Exception in thread "main" java.lang.NoClassDefFoundError: MyProgram (wrong name
: java1/MyProgram)
位于 java.lang.ClassLoader.defineClass1( native 方法)
位于 java.lang.ClassLoader.defineClass(来源未知)
位于 java.security.SecureClassLoader.defineClass(来源未知)
位于 java.net.URLClassLoader.defineClass(来源未知)
................
为什么会发生这种情况?
我的环境变量:
CLASSPATH: .;C:\Program Files (x86)\Java\jre7\lib\ext\QTJava.zip;C:\Program Files\Java\jdk1.7.0_05\bin
路径:C:\Program Files\Java\jdk1.7.0_05\bin
JAVA_HOME:C:\Program Files\Java\jdk1.7.0_05
我在这里看到了类似的问题,但我找不到解决我的问题的方法。 预先感谢您!
最佳答案
使用java
工具时应记住的两点:
- 将类添加到类路径中。
- 使用要运行的类的完全限定名称。
因此:
java -cp C:\Users\Apostolos\Documents\NetBeansProjects\Java1\bin java1.MyProgram
假设编译后存在以下文件:
C:\Users\Apostolos\Documents\NetBeansProjects\Java1\bin\java1\MyProgram.class
<小时/>
有关详细信息,请参阅:
关于java - 线程 'main' java.lang.NoClassDefFoundError 中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17850516/