昨天下午编译通过就一直报错Exception in thread "main" java.lang.NoClassDefFoundError:
早上终于调通了,加油
1 安装与配置
(1)在我的电脑C盘里安装了SDK ,路径是这样的:C:\Program Files\Java
安装之后在Java这个文件夹里有两个文件夹jdk1.6.0_10和jre6
(2)设置环境变量
在classpath路径后面加入 :C:\Program Files\Java\jdk1.6.0_10\jre\lib\rt.jar;.;
在path路径后面加入:C:\Program Files\Java\jdk1.6.0_10\bin
(3)写java文件
在D盘下建立了一个叫Java的文件夹,存放一个名叫Hello.Java的文件
在dos下输入:Javac D:\java\hello.java 能通过编译
但在运行 输入:Java D:\java\hello 就不能运行了
2 提示错误
Exception in thread "main" java.lang.NoClassDefFoundError:D:\java\hello
3 解决方法
应该这样检查你的环境和你的操作:
(1)、你的文件名对吗?
JAVA要求你的文件和你的类名严格对应的。比如 public class Hello{ .....
那么文件名一定只能是Hello.java,看仔细了
(2)、你的程序中有main方法吗?参数什么的对吗?
main方法的声明应该是这样子的:
public static void main(String[] args)
(3)、记住,javac后面跟的参数是文件名,但java 后面跟的是类名!
这是开始学JAVA时,常犯的错,java Hello.class,然后就报错。后来才弄明白,应该是java Hello。
(4)、环境变量检查
点开始->运行-->cmd,输入JAVA或JAVAC 如果你看到关于JAVA的很多信息 就OK了!其实都提示到Exception in thread "main" java.lang.NoClassDefFoundError:D:\java\hello 了 可以肯定的说,不是编译环境的问题。
(5)、查看你现在用的JDK版本和你编译文件的JDK是不是同一个版本的
点开始->运行-->cmd,然后输入 javac -version看编译器的版本,输入java -version看执行时的版本,再看看你刚才执行文件版 本,看一不一样!
(6)、你在环境变量CLASSPATH上加上路径D:/java,你照样可以直接运行命令java Hello,或者临时运行时候查找路径可以这样写java -classpath D:/java Hello (其实前面应该是没有问题的,我就是通过这条做成功的)。
或者set classpath=D:/java (注意这样只是临时设置classpath,一旦你关闭命令提示符设置即可失效)
java Hello
后来补充:
后来一想既然在环境变量中已经加入“.”(当前目录),为什么后面还非得再设置一次环境变量呢?难道原先的设置没有起作用?最后发现为题出在classpath和path的设置上。
原先的设置是:
“在classpath路径后面加入 :C:\Program Files\Java\jdk1.6.0_10\jre\lib\rt.jar;.;
在path路径后面加入:C:\Program Files\Java\jdk1.6.0_10\bin”
应该是这个样子:classpath中把“.”放在最前面,即:.;C:\Program Files\Java\jdk1.6.0_10\jre\lib\rt.jar;
在path路径的最前面加入:C:\Program Files\Java\jdk1.6.0_10\bin
原因:当你输入某个命令时,系统会在classpath,path中从前往后进行查找,一旦找到就不再继续往下查找。所以你在后面设置的路径,一旦在前面找到了根本就不会跑的你预想的路径下。
========》 我是通过set classpath来解决的
JAVA第一个问题搞定。