当前页面: 开发资料首页 → J2SE 专题 → JAVA程序出错,java.lang.NoClassDefFoundError
JAVA程序出错,java.lang.NoClassDefFoundError
摘要: JAVA程序出错,java.lang.NoClassDefFoundError
我觉得应该是环境变量问题。因为
1、这个是书上源代码下载来的
2、在任何一个IDE里面都可以运行
出错现象:可以编译,但是运行就报错 java.lang.NoClassDefFoundError
源代码如下:
public class Main {
public Main() {
}
public static void main(String[] args) {
System.out.println(-#34;That-#39;s OK!-#34;);// TODO code application logic here
}
}
但是我的环境变量已经设置过了,我是这样设置的
用户变量中 classpath 对应 .;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar
系统变量中也是这样
还有java_home path 也设置过了。到底是什么问题啊。好烦哦!
把 public 去掉试试
报错是 Exception in thread -#34;main-#34; java.lang.NoClassDefFoundError: MyProgram/java
楼上的,把哪个public去掉?我用的是JDK 1.5
class Main {
public Main() {
}
public static void main(String[] args) {
System.out.println(-#34;That-#39;s OK!-#34;);// TODO code application logic here
}
}
这样试试看 我运行就可以 我的也是JDK1.5
请确认你运行的时候的包名是正确的
包名字正确 可以运行的 按你给的包名字运行的
用JB运行吧!!
我知道在IDE里面可以运行的。但是我是初学者,不想依赖IDE,想在命令行下面学习。这样才可以更加深刻理解
1。 首先你现在命令行里面敲上 java -version, 看看能不能出来jdk的版本; 如果显示了正确的版本号, 说明你的配置没有问题。。
2。 public class Main {
public Main() {
}
public static void main(String[] args) {
System.out.println(-#34;That-#39;s OK!-#34;);// TODO code application logic here
}
}, 源代码看上去是没有错误的;(你的构造函数可以删除)。
3。 这个类的必须保存为Main.java;
4. 在命令行中进入存放该文件(Main.java)的路径下, 然后在命令行中敲javac Main.java
5. 这个时候应该在存放该文件(Main.java)的路径下产生Main.class文件;
6。 执行java Main;
OVER...
classpath设置的问题
java version -#34;1.5.0_07-#34;
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_07-b03)
Java HotSpot(TM) Client VM (build 1.5.0_07-b03, mixed mode, sharing)
上面的是结果。应该设置对了的。
如果你在程序里加了
package MyProgram.java;
那就要把Main.class放到文件夹MyProgram/java里
执行
java MyProgram/java/Main
NoClassDefFoundError
当 Java 虚拟机或 ClassLoader 实例试图在类的定义中加载(作为通常方法调用的一部分或者作为使用 new 表达式创建的新实例的一部分),但无法找到该类的定义时,抛出此异常。
当前执行的类被编译时,所搜索的类定义存在,但无法再找到该定义。
把classpath设为空!
core java2 第7版上说, 对于简单的java应用程序,不用设置classpath!!
set classpath=.;
java MyProgram