关于Java的错误:Exception in thread "main" java.lang.NoClassDe...

来源:互联网 发布:greendao查询所有数据 编辑:程序博客网 时间:2024/04/30 14:54

对于我们这些初学者来说,虽然环境配置成功。但是我们对这些变量到底什么意思并不清楚。

  三个环境变量:JAVA_HOME、PATH 和 CLASSPATH。

 JAVA_HOME:该环境变量的值就是 Java 所在的目录,一些 Java 版的软件和一些 Java 的工具需要用到该变量,设置 PATH 和 CLASSPATH 的时候,也可以使用该变量以方便设置。

 PATH:指定一个路径列表,用于搜索可执行文件的。执行一个可执行文件时,如果该文件不能在当前路径下找到,则依次寻找 PATH 中的每一个路径,直至找到。或者找完 PATH 中的路径也不能找到,则报错。Java 的编译命令 (javac),执行命令 (java) 和一些工具命令 (javadoc, jdb 等) 都在其安装路径下的 bin 目录中。因此我们应该将该路径添加到 PATH 变量中。

 CLASSPATH:也指定一个路径列表,是用于搜索 Java 编译或者运行时需要用到的类。在 CLASSPATH 列表中除了可以包含路径外,还可以包含 .jar 文件。Java 查找类时会把这个 .jar 文件当作一个目录来进行查找。通常,我们需要把 JDK 安装路径下的 jre/lib/rt.jar (Linux: jre/lib/rt.jar) 包含在 CLASSPATH 中。

 PATH 和 CLASSPATH 都指定路径列表,列表中的各项 (即各个路径) 之间使用分隔符分隔。在 Windows 下,分隔符是分号 (;),而在 Linux 下,分隔符是冒号 (:)。

关于Java的错误:Exception in thread "main" java.lang.NoClassDe... 这个错误时一般是因为CLASSPATH配置有问题,不是编译的环境的问题。

解决方法:

(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 (其实前面应该是没有问题的,我就是通过这条做成功的)。

补充:

(7)环境变量CLASSPATH位置问题:dt.jar和tools.jar。应该为CLASSPATH=.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar 

 最后一个是我自己遇到的,原因是为什么我就不知道了。请高手指教!