技术库 > Java

java命令运行class文件提示 错误:找不到或无法加载主类

技术库:tec.5lulu.com

from:tec.5lulu.com

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

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

第一个问题好解决:

我们直接在CLASSPATH环境变量中加入“.;”即可。“.”的意思是搜索当前目录

第二个问题看下面分析:

看下面两个类

  java命令运行class文件提示 错误:找不到或无法加载主类,by 5lulu.com

                   类A                                                                   类B

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

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

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

java命令运行class文件提示 错误:找不到或无法加载主类,by 5lulu.com

执行如下:

java命令运行class文件提示 错误:找不到或无法加载主类,by 5lulu.com

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

java命令运行class文件提示 错误:找不到或无法加载主类,by 5lulu.com

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

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

srcorgwillappmain下,如下:

java命令运行class文件提示 错误:找不到或无法加载主类,by 5lulu.com

然后我们编译执行:

java命令运行class文件提示 错误:找不到或无法加载主类,by 5lulu.com

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

好的,再试试:

java命令运行class文件提示 错误:找不到或无法加载主类,by 5lulu.com

还是不对。为什么?

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

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

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

java命令运行class文件提示 错误:找不到或无法加载主类,by 5lulu.com

成功!

总结

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

二、java执行class文件对package的路径是强依赖的。它在执行的时候会严格以当前用户路径为基础,按照package指定的包路径转化为文件路径去搜索class文件。各位同学以后注意就OK啦。

java命令运行class文件提示 错误:找不到或无法加载主类


标签: java 文件夹 app本文链接 http://tec.5lulu.com/detail/110dcn2ehwgcw85b5.html

我来评分 :6.1
0

转载注明:转自5lulu技术库

本站遵循:署名-非商业性使用-禁止演绎 3.0 共享协议

www.5lulu.com