关于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

双击安装就好了

配置环境变量

  1. 右键此电脑–>属性–>高级系统设置–>环境变量

  2. 配置JAVA_HOME(在用户变量里),路径为你的java安装目录,我的安装目录如下

  1. 配置Path(在系统变量里),路径为jdk和jre的运行目录,我的path配置如下

  1. 虽然在java1.6以上不需要配置CLASSPATH,但是因为我要配置额外的运行库,所以要在系统变量里配置完整CLASSPATH,值如下
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
  1. 因为配置了算法第四版的运行库,所以要在CLASSPATH中添加
;C:\Users\yeyun\alsgs4\algs4.jar

配置结束之后,点击三次确定,打开cmd(或gitbash),输入java -version,如果不报错并显示版本,则配置成功

现在再试试Helloworld能跑起来吗?

可以的,成功了!,再试试书上的示例代码可以跑起来吗?

可以了!

反省问题

其实jdk并没有问题,因为在idea上运行代码,项目都没有任何问题的,只是在命令行的时候出了问题!那么是哪里出了问题呢?

是CLASSPATH环境变量配置的问题!以前配置jdk的时候没有配置CLASSPATH,所以以前可以直接用java命令运行,但是现在因为配置了算法第四版的运行库,反而配置了CLASSPATH,但是并没有配置其它的默认的CLASSPATH,导致系统不知道你在运行java命令时的此时的.class文件的目录什么的(和.;这个环境变量内容有关系),配置之后就一切正常了!

总结

如果使用java命令运行.class文件时报错:找不到或无法加载主类,请进行如下操作:

  1. 检查你运行的类是不是处于某个包内,要在这个包的上一级目录,运行这个包中的类,并且在类名之前加上包名,如java top.leafii.day01.HelloWorld ,这样如果可以运行,那么就是你java命令要运行的包名没有弄清楚

  2. 检查你的环境变量是否配置正确,如果配置了其它的CLASSPATH,那就把默认的.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar也加上(注意分号)

  3. 如果实在不知道怎么搞,就重装一遍JDK!不过一般都是上面这两个情况。