java.lang.NoClassDefFoundError

7 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) {
        System.out.println("Wooof! WoooF!");
      } else if (size > 14) {
        System.out.println("Ruff! Ruff!");
      } else {
        System.out.println("Yip! Yip!");
      }
    }
}
Run Code Online (Sandbox Code Playgroud)

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

它们的输入完全按照它们在书中的方式输入,并且可以毫无问题地进行编译.当我尝试运行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$ 
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Mar*_*ers 16

不要.class在命令中包含:

java GoodDogTestDrive
Run Code Online (Sandbox Code Playgroud)


P-H*_*P-H 13

值得注意的是,尽管此问题的解决方案很简单(只需从Java命令行中删除.class),但在Java Web应用程序开发的上下文中很难确定java.lang.NoClassDefFoundError.

此Java异常意味着无法在当前Thread上下文类加载器中加载和/或找到"运行时"Java类.这通常是以下结果:

  • 缺少运行时类路径中的库.
  • Static {}块代码初始化程序执行失败(阻止受影响类的类加载).
  • JAR文件打包/ 类加载器树问题,例如在子和父类加载器中部署的JAR文件的混合.

建议任何Java初学者在预期将来的故障排除事件时正确理解此类问题.