问题大致描述:
我是必须输入`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虚拟机能够找到并加载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
才成功
其他都失败了