在命令行界面使用java命令运行class文件提示“错误:找不到或无法加载主类“的问题分析

      java学习笔记: (一)
      我最近刚开始学习java,使用IDE为 IntelliJ IDEA ,在使用的时候我发现在IDE里run成功的java程序,使用cmd命令行可以编译完成,但是使用java命令解释执行文件时,一直会提示错误:找不到或无法加载主类  java.lang.NoClassDefFoundError折个提示,在知乎百度都搜索了很久,没有找到适合自己的解决方案,最后我发现, IntelliJ IDEA会自动给你的java文件打包
package的路径是com.company.Main 按照java规定,我们应该按照package定义的路径来存放源文件,该类位于:
src\com\company\下,然后命令行运行就可以了 如下:


在命令行界面使用java命令运行class文件提示“错误:找不到或无法加载主类“的问题分析_第1张图片
成功解决!!

注意 在package包下解释执行的时候,类的名称为:包名+类名,所以我在cmd执行时,我的类全名就写为 com.company.Main 

总结:

刚看的另一篇博文总结的很好:java执行class文件对package的路径是强依赖的。它在执行的时候会严格以当前用户路径为基础,按照package指定的包路径转化为文件路径去搜索class文件。如果有朋友是环境变量配置错误的话,请百度下java的环境变量CLASSPATH等配置信息,在这就不多赘述了。其实就是个路径问题,很简单但是如果卡在这里也很让人找不到头脑,有的答主提的加什么什么包,什么什么lib文件的,我觉得实际需要的情况应该很少,多数朋友应该都是环境变量配置错误或像我一样不清楚命令行里java文件路径的问题。

有问题的朋友们还可以参考知乎
https://www.zhihu.com/question/25697905

https://www.zhihu.com/question/36537093

和百度

祝大家身体健康 代码漂亮!

补充 :Java 包(package)
为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间。


包的作用

1、把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。

2、如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。

3、包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。

Java 使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索和定位类(class)、接口、枚举(enumerations)和注释(annotation)等。




你可能感兴趣的:(java)