![](/img/trans.png)
[英]Exception in thread “main” java.lang.NoClassDefFoundError
[英]exception in thread 'main' java.lang.NoClassDefFoundError
当我尝试从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)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
.. ..............
为什么会这样?
我的环境变量:
类路径: .;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
我在这里看到过类似的问题,但是找不到我的问题的解决方案。 先感谢您!
当您的代码依赖于一个类文件,并且该类文件在编译时存在但在运行时未找到时,会导致这种情况。 在构建时间和运行时类路径中寻找差异。
Exception in thread "main" java.lang.NoClassDefFoundError: MyProgram (wrong name
当JVM在运行时无法找到您的类时,抛出此异常
From C:\Users\Apostolos\Documents\NetBeansProjects\Java1\src
execute " "java java1.MyProgram" –
使用java
工具时,请记住两点:
因此:
java -cp C:\Users\Apostolos\Documents\NetBeansProjects\Java1\bin java1.MyProgram
假设编译后存在以下文件:
C:\Users\Apostolos\Documents\NetBeansProjects\Java1\bin\java1\MyProgram.class
有关更多信息,请参见:
当Java虚拟机无法在运行时找到在编译时可用的特定类时,Java中会出现NoClassDefFoundError。 例如,如果我们从类中调用方法或访问类的任何静态成员,而该类在运行时不可用,则JVM将抛出NoClassDefFoundError。
NoClassDefFoundError的明显原因是某个特定的类在Classpath中不可用,因此我们需要将其添加到Classpath中,或者如果我们希望它可以在Classpath中检查为什么它不可用。 可能有多种原因,例如:
类在Java Classpath中不可用。
您可能正在使用jar命令运行程序,并且清单文件的ClassPath属性中未定义类。
任何启动脚本都将覆盖Classpath环境变量。
尝试这种方式
以管理员身份运行命令提示符,并
cd C:\Users\Apostolos\Documents\NetBeansProjects\Java1\src
然后
javac java1/MyProgram.java
然后
java java1.MyProgram
这将起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.