JAVA 找不到或无法加载主类

我的JAVA默认安装在C:\ProgramFiles\Java\jdk1.8.0_31目录下

系统环境变量配置为

JAVA_HOME=C:\Program Files\Java\jdk1.8.0_31

PATH= ; %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\toos.jar;(最前面的.;不能漏掉了,这个是告诉java在寻找类时在当前目录下寻找


设置JAVA_HOME,CLASSPATH,PATH的目的:
一、设置JAVA_HOME:
1.为了方便引用。比如,你JDK安装在C:\Program Files\Java\jdk1.7.0目录里,则设置JAVA_HOME为该目录路径, 那么以后你要使用这个路径的时候, 只需输入%JAVA_HOME%即可, 避免每次引用都输入很长的路径串;
2.归一原则, 当你JDK路径被迫改变的时候, 你仅需更改JAVA_HOME的变量值即可, 否则,你就要更改任何用绝对路径引用JDK目录的文档, 要是万一你没有改全, 某个程序找不到JDK, 后果是可想而知的----系统崩溃!
3.第三方软件会引用约定好的JAVA_HOME变量, 不然, 你将不能正常使用该软件, 以后用JAVA久了就会知道, 要是某个软件不能正常使用, 不妨想想是不是这个问题.

二、设置CLASSPATH:
这是一个很有趣,当然也比较折磨初学者的问题, 这个变量设置的目的是为了程序能找到相应的".class"文件, 不妨举个例子: 你编译一个JAVA程序---A.java, 会得到一个A.class的类文件,你在当前目录下执行java A, 将会得到相应的结果(前提是你已经设置CLASSPATH为"."). 现在, 你把A.class移到别的目录下(例如:"e:\"), 执行java A, 将会有NoClassDefFindError的异常,原因就是找不到.class文件, 现在你把CLASSPATH增加为:".;e:\"再在任何目录下运行java A, 看看会有什么结果~~:)~~~, 一切正常, java命令通过CLASSPATH找到了.class文件!

三、设置PATH:
道理很简单, 你想在任何时候都使用%JAVA_HOME%\bin\java 等来执行java命令吗, 当然不会, 于是, 你可以选择把%JAVA_HOME%\bin添加到PATH路径下, 这样, 我们在任何路径下就可以仅用java来执行命令了.(当你在命令提示符窗口输入你个代码时,操作系统会在当前目录和PATH变量目录里查找相应的应用程序,并且执行.)


如果环境变量设置正确,还是提示找不到或无法加载主类,则还有两个坑需要趟过去:

1.使用cmd命令行的javac将.java文件编译为.class文件时一定要在当前目录执行。这个要在cmd里将目录cd到当前目录(比如我的.java文件放在D:\javaCode目录,那么在cmd里就要cd到这个目录);

2.使用java命令执行的时候后面不要带上.class。比如java HelloWorld就可以,java HelloWorld.class就提示找不到或无法加载主类。


你可能感兴趣的:(java)