在命令行窗口中,如果javac的编译通过但之后用java命令执行.class文件报错:“找不到或无法加载主类”,我暂且知道大概有两种情况:
- **第一种:package目录的问题,这个答主的回答挺好的:**https://blog.csdn.net/weixin_42247720/article/details/81334611
但是,我报错的java文件并没有package,报错的原因是下面有关classpath的
2.第二种:删除CLASSPATH变量
我之前也有了解,jdk1.5之后就不用再配置CLASSPATH变量,所以我在下载完jdk配置路径时就没有配置CLASSPATH路径,但之后因为要安装算法(Sedgewick,Wayne版)一书的类库时,按照网上的教程,我配置了CLASSPATH。
但之后不久我再在cmd里用ava命令执行.class文件时就报错:“找不到或无法加载主类”。参考了上述第一种解决办法,但我的Java文件并没有package,所以解决方法无效。随后在网上见到有答主在删除或改动(将CLASSPATH从系统变量移动到用户变量)CLASSPATH之后就可以解决这个报错后,我就删除了CLASSPATH路径(我尝试将将CLASSPATH从系统变量移动到用户变量,无效。准确的说,是我的CLASSPATH变量只设置了另一个,与Java无关,但是CLASSPATH、PATH、JAVAHOME,这些变量到底有什么用,从理论上如何理解,还需要进一步去掌握)
之后重启电脑(不重启可能也行?),进cmd,用java命令执行.class文件就不会报错:“找不到或无法加载主类”。
这个问题Core Java 卷一也有提及:“如果键入java Welcome, 而虚拟机没有找到Welcomel类,就应该检查一下是否有人设置了CLASSPATH环境变量(将这个变量设为全局并不是一个提倡的做法,然而,Windows中有些比较差的软件安装程序就是这样做的)。可以像设置PATH环境变量一样设置CLASSPATH,不过这里将删除这个设置”[1]
参考文献:
[1] Cay S.Horstmann.Java核心技术 卷1[M].P18.周立新等人译.北京:机械工业出版社, 2016.8