线程'main'java.lang.NoClassDefFoundError中的异常

时间:2013-07-25 06:23:23

标签: java path classpath javac

当我尝试从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)  ................

为什么会发生这种情况?

我的环境变量:

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

我在这里看到过类似的问题,但我无法找到解决问题的方法。 提前谢谢!

5 个答案:

答案 0 :(得分:1)

当您的代码所依赖的类文件存在于编译时但在运行时未找到时,会导致这种情况。查找构建时和运行时类路径的差异。

Refer this Link

答案 1 :(得分:0)

Exception in thread "main" java.lang.NoClassDefFoundError: MyProgram (wrong name

当JVM在运行时无法找到您的类时,抛出此异常

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

execute " "java java1.MyProgram" –

答案 2 :(得分:0)

使用java工具时应注意2点:

  1. 将类添加到类路径中。
  2. 使用要运行的类的完全限定名称。
  3. 因此:

    java -cp C:\Users\Apostolos\Documents\NetBeansProjects\Java1\bin java1.MyProgram
    

    假设编译后存在以下文件:

    C:\Users\Apostolos\Documents\NetBeansProjects\Java1\bin\java1\MyProgram.class
    

    有关详细信息,请参阅:

答案 3 :(得分:0)

  当Java虚拟机没有时,Java中会出现NoClassDefFoundError   能够在运行时找到特定的类   编译时间。例如,如果我们从类或方法调用方法   访问类的任何静态成员,该类不可用   在运行期间,JVM将抛出NoClassDefFoundError。

NoClassDefFoundError的明显原因是Classpath中没有特定的类,所以我们需要将它添加到Classpath中,或者我们需要检查为什么它在Classpath中不可用,如果我们期望它的话。可能有多种原因,如:

  1. Java Classpath中没有类。

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

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

答案 4 :(得分:0)

尝试这种方式

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

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

然后

javac java1/MyProgram.java

然后

java java1.MyProgram

这样可行。

相关问题