关于java命令报错 找不到或无法加载主类这件事
起因
今天在配置《算法》(第四版)所需要的环境后,进行java命令+输入输出流文件时报错了!报错如图所示:
咋回事呢?
或许,是因为没有写包名?
还是不行!!!咋回事呢?
写个HelloWorld试试?可能是java命令出问题了?
在D盘根目录写一个Hello.java,代码如下(其实就是Helloworld啦)
public class Hello{
public static void main(String[] args){
System.out.println("HelloWorld");
}
}
然而运行的时候…
??????怎么回事呢?
用家里的Mac的终端试试能不能写Java代码
可以的,一样的代码,它就能运行,咱就不行,怎么回事呢?
干脆重新安装JDK试试!
卸载旧的JDK
打开控制面板–>卸载程序–>找到Java开头的两个应用
给他们都卸载了!
把环境变量配置的JAVA_HOME,以及Path中的两个java运行路径都删除!
下载JDK
当然是去甲骨文官网下载啦,[官网地址](Java SE - Downloads | Oracle Technology Network | Oracle)
选择合适的jdk版本的合适系统的安装包,点击下载,同意协议,登陆账户后自动开始下载
安装JDK
双击安装就好了
配置环境变量
右键此电脑–>属性–>高级系统设置–>环境变量
配置JAVA_HOME(在用户变量里),路径为你的java安装目录,我的安装目录如下
- 配置Path(在系统变量里),路径为jdk和jre的运行目录,我的path配置如下
- 虽然在java1.6以上不需要配置CLASSPATH,但是因为我要配置额外的运行库,所以要在系统变量里配置完整CLASSPATH,值如下
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
- 因为配置了算法第四版的运行库,所以要在CLASSPATH中添加
;C:\Users\yeyun\alsgs4\algs4.jar
配置结束之后,点击三次确定,打开cmd(或gitbash),输入java -version,如果不报错并显示版本,则配置成功
现在再试试Helloworld能跑起来吗?
可以的,成功了!,再试试书上的示例代码可以跑起来吗?
可以了!
反省问题
其实jdk并没有问题,因为在idea上运行代码,项目都没有任何问题的,只是在命令行的时候出了问题!那么是哪里出了问题呢?
是CLASSPATH环境变量配置的问题!以前配置jdk的时候没有配置CLASSPATH,所以以前可以直接用java命令运行,但是现在因为配置了算法第四版的运行库,反而配置了CLASSPATH,但是并没有配置其它的默认的CLASSPATH,导致系统不知道你在运行java命令时的此时的.class文件的目录什么的(和.;这个环境变量内容有关系),配置之后就一切正常了!
总结
如果使用java命令运行.class文件时报错:找不到或无法加载主类,请进行如下操作:
检查你运行的类是不是处于某个包内,要在这个包的上一级目录,运行这个包中的类,并且在类名之前加上包名,如
java top.leafii.day01.HelloWorld
,这样如果可以运行,那么就是你java命令要运行的包名没有弄清楚检查你的环境变量是否配置正确,如果配置了其它的CLASSPATH,那就把默认的
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
也加上(注意分号)如果实在不知道怎么搞,就重装一遍JDK!不过一般都是上面这两个情况。