有时候我们需要直接用jdk提供的java命令来执行class文件让软件运行起来,特别是很多初学者,但经常会发现如下提示:

用eclipse或用ant则没有问题。

其实原因很简单,我们忽略了2个细节

  1. java指令默认在寻找class文件的地址是通过CLASSPATH环境变量中指定的目录中寻找的。

  2. 我们忽略了package的影响。

第一个问题好解决:

我们直接在CLASSPATH环境变量中加入“.;”即可。“.”的意思是搜索当前目录,但其实jdk1.5之后便无需再配置classpath

第二个问题看下面分析:

看下面两个类

类A

类B

类A和类B的唯一差别就是没有定义包名。

我们的工程路径是D:\HelloWorld,在HelloWorld文件夹中建立一个src文件夹,类B的源代码文件就放在src中。用javac编译完以后

会在src文件夹中生成NewsManager.class,如下

执行如下:

现在我们再把源代码换成类A

为什么加入了package后就不对了呢?

类A中package的路径是org.will.app.main。按照java规定,我们应该按照package定义的路径来存放源文件,类A应该放入:

src\org\will\app\main下,如下:

然后我们编译执行:

依然有问题,为什么,其实大家再回去看看java的书籍就会发现,一个类的全名应该是包名+类名。类A的全名:org.will.app.main.NewsManager

好的,再试试:


还是不对。为什么?

仔细看上面的图,我们在main目录下让java命令去执行org.will.app.main.NewsManager,其实它会以为类的路径是:

D:\HelloWorld\src\org\will\app\main\org\will\app\main\NewsManager,大家看到了吧,路径重复了。

所以,我们应该这样执行:

总结:

  • 一、java执行class文件是根据CLASSPATH指定的地方来找,不是我们理解当前目录。如果希望它查询当前目录,需要在CLASSPATH中加入“.;”,代表当前目录。

  • 二 、java执行class文件对package的路径是强依赖的。它在执行的时候会严格以当前用户路径为基础,按照package指定的包路径转化为文件路径去搜索class文件。各位同学以后注意就OK啦。至于网上说的要在CLASSPATH要加各种包等等都是泛泛而谈,真正静下心分析这个问题的资料不多。很多都没有说到点子上,会误导人的。

文章转自

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

  1. mac 下 使用 java运行 class 文件 总是提示 “错误: 找不到或无法加载主类”的解决方法...

    发现问题 切换到mac平台后,突然想写点程序运行在mac下,想到mac自带java,会方便好多.不过在这过程中遇到了麻烦: 总是提示 "错误: 找不到或无法加载主类" 工程结构 查 ...

  2. 运行提示‘错误: 找不到或无法加载主类 Engine.Runner’;修改文件夹为package

    Q:配置run/debug configuration时 main class 报红,运行后提示"错误: 找不到或无法加载主类 Engine.Runner":如下图: A:排查得知 ...

  3. linux ant命令 出错,linux ant 解决 错误: 找不到或无法加载主类 org.apache.tools.ant.launch.Launcher...

    在使用ant进行java程序编译的时候出错.错误提示: Error: Could not find or load main class org.apache.tools.ant.launch.Lau ...

  4. Eclipse无法编译,提示错误“找不到或者无法加载主类”解决方法

    Eclipse无法编译,提示错误"找不到或者无法加载主类"解决方法 参考文章: (1)Eclipse无法编译,提示错误"找不到或者无法加载主类"解决方法 (2) ...

  5. 在Windows端安装kafka 提示错误: 找不到或无法加载主类 的解决方案

    在Windows端安装kafka 提示错误: 找不到或无法加载主类 的解决方案 参考文章: (1)在Windows端安装kafka 提示错误: 找不到或无法加载主类 的解决方案 (2)https:// ...

  6. springboot项目启动时提示错误: 找不到或无法加载主类

    问题: springboot项目启动时提示错误: 找不到或无法加载主类 解决方法:

  7. zzw原创_cmd下带jar包运行提示 “错误: 找不到或无法加载主类 ”

    在windows下编译java,由于是临时测试一下文件,不想改classpath,就在命令行中用 -cp 或classpath引入jar包,用javac编译成功,便使用java带-cp 或classp ...

  8. 在Windows端安装kafka提示错误:找不到或无法加载主类的解决方案

    在配置好kafka的server.properties文件后,cmd进入命令窗口输入命令:.\bin\windows\kafka-server-start.bat config\server.prop ...

  9. IDEA一直提示 错误: 找不到或无法加载主类

    1.把http://repo1.maven.org/maven2...下载下来 2.放到本地Manen仓库archetype 文件夹下 3.设置IDEA Maven->Runner 界面的VM ...

  10. Java:cmd命令行中 错误: 找不到或无法加载主类(从原理出发讲解!)

    参考阅读(推荐) 使用java命令运行class文件提示"错误:找不到或无法加载主类"的问题分析 以下为原答案,不适用于所有问题场景,敬请参考上述链接(讲解非常细致) 知识点 ja ...

最新文章

  1. 成为MySQL DBA 博客系列-数据库升级
  2. OC基础--OC内存管理原则和简单实例
  3. Shell脚本读取Redis键值对
  4. html5 数据验证,【译】表单数据校验
  5. 回顾JAVA---1.概述及基本语法
  6. 大型前端项目的断点调试共享化和复用化实践
  7. 如何取消IE“已限制此网页运行可以访问计算机的脚本或ActiveX控件”(小技巧)...
  8. Windows 文件同步方案讨论
  9. 乘“峰”而上,聚生态之力共创软件产业新未来
  10. Java 9 ← 2017,2019 → Java 13 ,Java 两年来都经历了什么?| CSDN 博文精选
  11. 2017-07-12(数据库)
  12. 长青藤cad_长青网
  13. 13.56MHZ刷卡芯片CI521兼容cv520/ci520支持A卡B卡MIFARE协议
  14. n维单位向量的生成公式
  15. 进击高手【第五期】思维题
  16. 《Windows 程序设计(第3版)》——6.7 【实例】窗口查看器
  17. java基础之 IO流
  18. 《矩阵理论》大萌课程笔记 - 特殊矩阵
  19. k8s sa role rolebinding secret
  20. 微软禁止员工购买苹果Mac iPad系列产品

热门文章

  1. Spring核心之对 IOC的理解
  2. 这里有一篇简单易懂的webSocket 快到碗里来~
  3. 【t081】序列长度(贪心做法)
  4. Esay ui数据加载等待提示
  5. mysql:Failed to read auto-increment value from storage engine
  6. 问题小结(6)-listview滚动条相关
  7. 免费素材下载:Box Of Bundles Number 2
  8. SQL Server 数据库安全
  9. R:matlab交互,数据调用
  10. 莱斯分布概率分布曲线