繁体   English   中英

线程“ 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工具时,请记住两点:

  1. 将类添加到类路径。
  2. 使用要运行的类的标准名称。

因此:

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中检查为什么它不可用。 可能有多种原因,例如:

  1. 类在Java Classpath中不可用。

  2. 您可能正在使用jar命令运行程序,并且清单文件的ClassPath属性中未定义类。

  3. 任何启动脚本都将覆盖Classpath环境变量。

尝试这种方式

以管理员身份运行命令提示符,并

cd C:\Users\Apostolos\Documents\NetBeansProjects\Java1\src

然后

javac java1/MyProgram.java

然后

java java1.MyProgram

这将起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM