解决 java命令行运行class文件时报“错误:找不到或无法加载主类”

问题描述:

今天准备开始复习一下jvm参数,在 perfma 社区里正好有这么一个小课程:https://club.perfma.com/course

从第一节开始复习时,大佬在课后留了一个问题,所以最好自己在java命令行中运行验证一下。结果没想到就碰到了“错误:找不到或无法加载主类”这个问题。

程序都没运行起来,怎么验证jvm参数啊???

于是前后耗时2H(google搜索相关有用的知识点+笔记整理),终于解决了。

笔记总结如下:

解决 java命令行运行class文件时报“错误:找不到或无法加载主类”

解决思路:

google搜了一圈,整体看下来,每篇用的文字都比我最后做的总结多,而且总感觉说不到点上,或者说不全。

于是开始自己尝试分析:

1. 先从IDE里找找灵感:既然IDE能运行成功,那么就从它开始入手。在intellij idea里运行了程序后,查看run窗口,发现使用了 -classpath 命令,并且文件名使用了“全限定类名”。

2. 在(1)的发现中,全限定类名 和 -classpath(缩写-cp)是两个关键的发现。顺藤摸瓜,经过一番思考后(two hours later......)联想到“文件的绝对路径”。并且再次验证idea中run窗口,(使用ctrl+F再次搜索发现)-classpath 中出现了自己项目的路径,证实了这点。

3. 根据前面2点,总结成文。

后记:

至于 classpath 和 全限定类名 之间有什么关系,大家就得回忆下java package的命名空间规则了。属于相当基础的内容,不再赘述啦~