运行java文件,错误提示:找不到或无法加载主类?
有时候我们需要直接用jdk提供的java命令来执行class文件让软件运行起来,特别是很多初学者,但经常会发现如下提示:
用eclipse或用ant则没有问题。
其实原因很简单,我们忽略了2个细节。
1.java指令默认在寻找class文件的地址是通过CLASSPATH环境变量中指定的目录中寻找的。
2.我们忽略了package的影响。
第一个问题好解决:
我们直接在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应该放入:
srcorgwillappmain下,如下:
然后我们编译执行:
依然有问题,为什么,其实大家再回去看看java的书籍就会发现,一个类的全名应该是包名+类名。类A的全名:org.will.app.main.NewsManager
好的,再试试:
还是不对。为什么?
仔细看上面的图,我们在main目录下让java命令去执行org.will.app.main.NewsManager,其实它会以为类的路径是:
D:HelloWorldsrcorgwillappmainorgwillappmainNewsManager,大家看到了吧,路径重复了。
所以,我们应该这样执行:
成功!
总结:
一、java执行class文件是根据CLASSPATH指定的地方来找,不是我们理解当前目录。如果希望它查询当前目录,需要在CLASSPATH中加入“.;”,代表当前目录。
二、java执行class文件对package的路径是强依赖的。它在执行的时候会严格以当前用户路径为基础,按照package指定的包路径转化为文件路径去搜索class文件。各位同学以后注意就OK啦。至于网上说的要在CLASSPATH要加各种包等等都是泛泛而谈,真正静下心分析这个问题的资料不多。很多都没有说到点子上,会误导人的。
Java错误:找不到或无法加载主类。怎么办?
您好,很高兴能回答你的问题。
找不到或无法加载主类检查JDK是否安装好,路径是否安装正确,即javac、java、java -version都能运行出来。
如果全部运行正确,javac test.java编译正常,java Demo出现错误提示,则按下列步骤来做。
检查JАVA_HOME,没有就创建,这是jdk的安装路径。
检查path,可将path中路径改为%JАVA_HOME%bin;
检查classpath,可将classpath中路径改为.;%JАVA_HOME%bin;%JАVA_HOME%libtools.jar。
全部修改完毕,再次运行,就可出现hello world了。
还有的情况是java文件中的大小写问题
jdk 找不到或无法加载主类
- 要想执行java Test。JVM必须能够在类路径下加载到Test.class,有两种途径:第一,cd到你的Test.class文件所在目录,再执行jav涪搐帝诽郜赌佃涩顶绩a Test;第二种,把Test.class所在目录加入到classpath路径中。楼主现在出现的问题,肯定是类路径下没有这个文件。。。。。
找不到或无法加载主类
- 我用Eclipse是可以编译运行的,但使用EditPlus时却只能编译不能运行。环境变量配置都是对的。求助。
- 改成 public class qwe
HELLOWORLD 错误: 找不到或无法加载主类 main.HelloWorld
- 本人刚学JАVA,到Cmd里JАVA和JАVAC都是通过的,但是编写HelloWorld运行时报错误: 找不到或无法加载主类 main.HelloWorld,请问是什么回事?JАVA_HOME:C:Program FilesJavajdk1.8.0CLASSPATH:.;%JАVA_HOME%libdt.jar;%JАVA_HOME%libtools.jarpath :C:Program FilesJavajdk1.8.0;%JАVA_HOME%bin;%JАVA_HOME%jrebin求指教
- 文件命名需要是你所定义的名字,不然是找不到 的我是用android写的,应该大致一样 package study.android.HelloWorld; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class HelloWorld extends Activity { HelloWorld(也可以是其他名字,但是必须和你编写的文件名字一致)是文件名才行 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = new TextView(this); tv.setText("Hello, World!"); setContentView(tv); } }
用jcreator执行文件显示找不到或无法加载主类
- 我的是win8系统,安装目录是D:Program Files (x86)Javajdk1.7.0_15环境变量是PathD:Program Files (x86)Javajdk1.7.0_15bin;%SystemRoot%system32;%SystemRoot%;%SystemRoot%System32Wbem;CLASSPATH.;%JАVA_HOME%libJАVA_HOMED:Program Files (x86)Javajdk1.7.0_15在cmd中能正常运行,但使用JCreator Pro中执行命令时出现下面黑窗口[有没有知道怎么弄的,虚心地领教,在此先感谢了]
- 你的source好像少了个大括号关闭符号,class L11相对应的关闭括号没有,是不是因为编译失败导致的?
找不到或无法加载主类问题
- 以下是代码:public class Anything { public static void main(String[] args) { System.out.println("Hello Java"); }}我觉得没有问题啊。。。
- 你的类名是不是没定义成public?