java.lang.NoClassDefFoundError
我正在学习Java,但在运行示例程序时遇到了问题 我有两个文件: GoodDog.java: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) {
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
试试看,让我们知道。我和你面临着同样的问题 我这样解决了这个问题:
只需将丢失的.class文件复制到eclipse项目的bin目录,就可以解决问题 需要注意的是,虽然解决这个问题的方法很简单(只需从Java命令行中删除.class),但在Java Web应用程序开发的环境中,很难找到解决方法 此Java异常意味着无法在当前线程上下文类加载器中加载和/或找到“运行时”Java类。这通常是以下因素的结果:
- 运行时类路径中缺少库
- 代码初始值设定项执行失败(阻止受影响类的类加载)
- JAR文件打包/问题,例如在子类和父类加载器上部署的JAR文件混合
建议所有Java初学者正确理解这类问题,以防将来出现故障排除事件。问题Java.lang.NoClassDefFoundError 根本原因:环境变量部分中设置的Java路径不正确 解决方案:设置正确的JAVA\u主路径 步骤->环境变量设置(我的公司右键单击->属性->环境变量->高级选项卡->变量)
JAVA_HOME **.;C:\Program Files (x86)\Java\jdk1.6.0_14**
PATH %JAVA_HOME%\bin
CLASSPATH %JAVA_HOME%\jre\lib
echo %CLASSPATH%
echo %JAVA_HOME%
echo %PATH%
如果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