java.lang.NoClassDefFoundError

java.lang.NoClassDefFoundError,java,noclassdeffounderror,Java,Noclassdeffounderror,我正在学习Java,但在运行示例程序时遇到了问题 我有两个文件: GoodDog.java: class GoodDog { private int size; public int getSize() { return size; } public void setSize(int s) { size = s; } void bark() { if (size > 60) {

我正在学习Java,但在运行示例程序时遇到了问题

我有两个文件:

GoodDog.java:

    class GoodDog {
    private int size;
    public int getSize() {
      return size;
    }

    public void setSize(int s) {
      size = s;
    }

    void bark() {
      if (size > 60) {
        System.out.println("Wooof! WoooF!");
      } else if (size > 14) {
        System.out.println("Ruff! Ruff!");
      } else {
        System.out.println("Yip! Yip!");
      }
    }
}
GoodDogTestDrive.java:

    class GoodDogTestDrive {
    public static void main (String[] args) {
      GoodDog one = new GoodDog();
      one.setSize(70);
      GoodDog two = new GoodDog();
      two.setSize(8);
      System.out.println("Dog one: " + one.getSize () );
      System.out.println("Dog two: " + two.getSize () );
      one.bark();
      two.bark();
    }
}
它们完全按照书中的方式打印出来,并且没有问题地编译。当我尝试运行GoodDogTestDrive时,我得到以下结果:

nephi-shields-mac-mini:/Developer/MyProjects/GoodDog nephishields$ java GoodDogTestDrive.class
java.lang.NoClassDefFoundError: GoodDogTestDrive/class
Exception in thread "main" nephi-shields-mac-mini:/Developer/MyProjects/GoodDog nephishields$ 

我做错了什么?

不要在命令中包含
.class

java GoodDogTestDrive

如果GoodDog类文件不在当前工作目录中,则需要在java命令上设置类路径

java GoodDogTestDrive -cp ./path/to/gooddog/
只需使用“java yourClass”运行程序

最后不要使用.class


试试看,让我们知道。

我和你面临着同样的问题

我这样解决了这个问题:

  • 检查环境变量中的类路径
  • 我在eclipse的navigator中打开了该项目,并检查了类文件。我的类文件位于不同的文件夹中,不在bin文件夹中。我只是将丢失的文件复制到bin文件夹中,然后问题就解决了
    只需将丢失的.class文件复制到eclipse项目的bin目录,就可以解决问题

    需要注意的是,虽然解决这个问题的方法很简单(只需从Java命令行中删除.class),但在Java Web应用程序开发的环境中,很难找到解决方法

    此Java异常意味着无法在当前线程上下文类加载器中加载和/或找到“运行时”Java类。这通常是以下因素的结果:

    • 运行时类路径中缺少库
    • 代码初始值设定项执行失败(阻止受影响类的类加载)
    • JAR文件打包/问题,例如在子类和父类加载器上部署的JAR文件混合

    建议所有Java初学者正确理解这类问题,以防将来出现故障排除事件。

    问题Java.lang.NoClassDefFoundError

    根本原因:环境变量部分中设置的Java路径不正确

    解决方案:设置正确的JAVA\u主路径

    步骤->环境变量设置(我的公司右键单击->属性->环境变量->高级选项卡->变量)

  • 创建新的JAVA_HOME环境变量

    JAVA_HOME    **.;C:\Program Files (x86)\Java\jdk1.6.0_14**
    
  • 在路径变量部分设置JAVA_HOME变量

    PATH  %JAVA_HOME%\bin
    
  • 在CLASSPATH变量中设置JAVA_HOME变量

    CLASSPATH  %JAVA_HOME%\jre\lib
    
  • 重启系统

  • 验证所有变量

    echo %CLASSPATH%
    
    echo %JAVA_HOME%
    
    echo %PATH%
    
  • 编译java类javac Test.java

  • 运行Java程序Java测试


  • 如果JVM或ClassLoader实例试图加载类的定义(方法调用或创建新实例),但找不到该类的定义,则引发

    原因是特定类在运行时不可用,但在编译时可用

    1.该类属于缺少的JAR或JAVA文件,或者JAR未添加到类路径中

    2.类在Java类路径中不可用。

    3.由于静态初始值设定项块中出现异常,Java中出现NoClassDefFoundError。当您的类在static中执行一些静态初始化时 如果静态块抛出异常,则 引用该类将获得Java中的NoclassDefFoundError

    4.您的类路径、路径或JAVA_HOME设置不正确或JDK安装不正确。这可以通过重新安装JDK来解决


    5.执行maven clean安装,然后使用必要的源(.java)文件简单地重新启动服务器。

    我正在寻找回答此类问题的一般性问题,这些问题非常常见,您应该能够通过查看相关帖子来解决。如果有人在URL上击败我,请发布它。每次你在parens旁边放一个空格,我都会畏缩。谢谢,它起作用了!我想知道为什么移除。课堂让它工作。。。我得用谷歌搜索一下。我读那本书的时候也犯了同样的错误;)@这是因为在Java中,
    是一个作用域解析操作符,所以GoodDogTestDrive.class指的是包
    GoodDogTestDrive
    中名为
    class
    的类,它当然不存在。这就是为什么错误消息中有
    GoodDogTestDrive/class