您的位置:首页 > 编程语言 > Java开发

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

2018-03-11 14:47 1136 查看
      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\下,然后命令行运行就可以了 如下:


成功解决!!
注意 在package包下解释执行的时候,类的名称为:包名+类名,所以我在cmd执行时,我的类全名就写为 com.company.Main 
总结:刚看的另一篇博文总结的很好:java执行class文件对package的路径是强依赖的。它在执行的时候会严格以当前用户路径为基础,按照package指定的包路径转化为文件路径去搜索class文件。如果有朋友是环境变量配置错误的话,请百度下java的环境变量CLASSPATH等配置信息,在这就不多赘述了。其实就是个路径问题,很简单但是如果卡在这里也很让人找不到头脑,有的答主提的加什么什么包,什么什么lib文件的,我觉得实际需要的情况应该很少,多数朋友应该都是环境变量配置错误或像我一样不清楚命令行里java文件路径的问题。
有问题的朋友们还可以参考知乎https://www.zhihu.com/question/25697905https://www.zhihu.com/question/36537093
和百度
祝大家身体健康 代码漂亮!

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


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

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

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

Java 使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索和定位类(class)、接口、枚举(enumerations)和注释(annotation)等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐