我正在学习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$
我做错了什么?
答案 0 :(得分:16)
请勿在命令中包含.class
:
java GoodDogTestDrive
答案 1 :(得分:12)
值得注意的是,尽管此问题的解决方案很简单(只需从Java命令行中删除.class),但在Java Web应用程序开发的上下文中很难确定java.lang.NoClassDefFoundError。 / p>
此Java异常意味着无法在当前Thread上下文类加载器中加载和/或找到“运行时”Java类。这通常是以下结果:
建议任何Java初学者在预期将来的故障排除事件时正确理解此类问题。
答案 2 :(得分:1)
只需使用“java yourClass”运行程序。
最后不要使用.class。
试一试,告诉我们。
答案 3 :(得分:0)
如果GoodDog类文件不在当前工作目录中,则需要在java命令中设置类路径....
java GoodDogTestDrive -cp ./path/to/gooddog/
答案 4 :(得分:0)
<强>问题-java.lang.NoClassDefFoundError 强>
根本原因:环境变量部分
中设置的Java路径不正确解决方案:设置正确的JAVA_HOME路径
步骤 - &gt;环境变量设置(我的Comp-Right Click - &gt; Properties-&gt; Env Variable-&gt; Advance Tab - &gt; Variable)
创建新的JAVA_HOME环境变量。
JAVA_HOME **.;C:\Program Files (x86)\Java\jdk1.6.0_14**
在PATH变量部分设置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 Test
答案 5 :(得分:0)
如果JVM或ClassLoader实例尝试加载类的定义(方法调用或创建新实例)并且找不到类的定义,则抛出该文件。
NoClassDefFoundError的原因是某个特定的类在运行时不可用,但在编译期间可用。
1.该类属于缺少JAR或JAVA文件,或者JAR未添加到类路径中。
2. Class Classpath中没有类。
3. 由于静态初始化程序块中的异常导致Java中的NoClassDefFoundError 。当你的类在静态中执行一些静态初始化时 块,如果静态块抛出一个异常,那么这个类就是 引用这个类将在Java中获得NoclassDefFoundError。
4.您的 Classpath,PATH或JAVA_HOME 未正确设置或JDK安装不正确。可以通过重新安装JDK 来解决。
5.使用必要的源(.java)文件进行 maven clean-install 并简单地重新启动服务器。
答案 6 :(得分:-1)
我遇到了和你一样的问题。
我解决了这个问题:
只需将缺少的.class文件复制到eclipse项目的 bin 目录即可解决问题。