问题大致描述:
我是必须输入`java -cp . Hello` 才能运行成功。

(我没有在环境变量中配置classpath)

如果只输入`java Hello` 则报错 "错误: 找不到或无法加载主类 Hello"


问题详细描述:

参考了您的这篇文章"https://www.liaoxuefeng.com/wiki/1252599548343744/1260466914339296" 后 尝试`java -cp . Hello` 才成功。

但是按照您的解释,"没有设置系统环境变量,也没有传入-cp参数,那么JVM默认的classpath.,即当前目录"; "没有设置系统环境变量,也没有传入-cp参数,那么JVM默认的classpath.,即当前目录"

我没有设置-cp, 更没有设置系统环境变量,直接输入`java Hello` 就会报错"错误: 找不到或无法加载主类 Hello"


结论:

后来我发现,我虽然没有系统变量classpath,但是不知道哪个软件在我的用户变量里添加了classpath。。。删除了,然后重启cmd(必须重启),就正常了。


在JDK 1.5之后,完全可以不配置这个变量。不配置CLASSPATH,JRE会自动搜索当前路径下的类文件。编译、运行时,系统可以自动加载dt.jar和tools.jar文件中的Java类。

 https://www.liaoxuefeng.com/wiki/1252599548343744/1280507291631649



在运行java Hello时报错可能是因为当前目录不包含所需的类文件。请确保你在包含Hello.class文件的目录下运行命令。如果Hello.java已经成功编译成Hello.class,但仍然报错,可能是因为类路径设置不正确。你可以尝试使用-cp参数指定类路径,例如:

java -cp /path/to/Hello Hello
  • 1.

这将确保Java虚拟机能够找到并加载Hello.class文件。


 https://www.liaoxuefeng.com/wiki/1252599548343744/1260466914339296

在Java中,我们经常听到classpath这个东西。网上有很多关于“如何设置classpath”的文章,但大部分设置都不靠谱。

不要设置classpath,如果设置了就删掉,你看的文章都是误导人的。

 https://www.liaoxuefeng.com/wiki/1252599548343744/1255878730977024


。在启动JVM时设置classpath才是推荐的做法。实际上就是给java命令传入-classpath-cp参数


java -cp . Hello

才成功


其他都失败了