java中无法加载或找不到主类
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中无法加载或找不到主类相关的知识,希望对你有一定的参考价值。
我讲eclipse左边窗口界面全部关掉了,重新打开eclipse后,在运行已经写好的java程序时全部都提示无法找到或找不到类
//这个问题原因有以下几种,但是和环境变量并没有太大的关系//能够执行java 和 javac 就证明你的环境变量已经配置好了,其实 classpath 可以不配置
//假如有如下文件:H:\\code\\Hello.java
public class Hello
public static void main(String[]args)
System.out.println("Hello");
//正确编译命令: javac Hello.java
//正确<a href="https://www.baidu.com/s?wd=%E8%BF%90%E8%A1%8C%E5%91%BD%E4%BB%A4&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YvmWbsPj7WPWIbrjbLnWb40ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnHm4njT1nHn1rHfLP1fkPjmzr0" target="_blank" class="baidu-highlight">运行命令</a>: java Hello
错误1:H:\\code>java Hello.java
错误: 找不到或无法加载主类 Hello.java
原因:命令错误
错误2:H:\\code>java Hello.class
错误: 找不到或无法加载主类 Hello.class
原因:命令错误
错误3:java 源文件带有包名,往往容易出错
如:H:\\code\\Hello2.java
package com.example;
public class Hello2
public static void main(String[]args)
System.out.println("Hello2");
这代码看上去没什么问题,执行:
H:\\code>javac Hello2.java
H:\\code>java Hello2
错误: 找不到或无法加载主类 Hello2
解决办法:
+.删除包名 或者
+.在code 下创建一个与包名相同的文件结构(H:\\code\\com\\example\\Hello2.java)
编译:H:\\code>javac com/example/Hello2.java
运行:H:\\code>java com.example.Hello2 参考技术A //这个问题原因有以下几种,但是和环境变量并没有太大的关系//能够执行java 和 javac 就证明你的环境变量已经配置好了,其实 classpath 可以不配置//假如有如下文件:H:\code\Hello.javapublic class Hello public static void main(String[]args) System.out.println("Hello"); //正确编译命令: javac Hello.java//正确<a href="https://www.baidu.com/s?wd=%E8%BF%90%E8%A1%8C%E5%91%BD%E4%BB%A4&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YLuWfLmy7BuWIbnvD3nhnd0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnHm4njT1nHn1rHfLP1fkPjmzr0" target="_blank" class="baidu-highlight">运行命令</a>: java Hello 错误1:H:\code>java Hello.java错误: 找不到或无法加载主类 Hello.java原因:命令错误 错误2:H:\code>java Hello.class错误: 找不到或无法加载主类 Hello.class原因:命令错误 错误3:java 源文件带有包名,往往容易出错如:H:\code\Hello2.javapackage com.example; public class Hello2 public static void main(String[]args) System.out.println("Hello2"); 这代码看上去没什么问题,执行:H:\code>javac Hello2.javaH:\code>java Hello2错误: 找不到或无法加载主类 Hello2 解决办法:+.删除包名 或者 +.在code 下创建一个与包名相同的文件结构(H:\code\com\example\Hello2.java) 编译:H:\code>javac com/example/Hello2.java 运行:H:\code>java com.example.Hello2
java运行显示“找不到或无法加载主类”怎么回事?
环境:path:D:\Program Files\Java\jdk1.7.0\bin
classpath:D:\Program Files\Java\jdk1.7.0\lib\tools.jar;D:\Program Files\Java\jdk1.7.0\lib\dt.jar
运行文件:public class Test
public static void main(String[] args)
System.out.println("Hello Word");
cmd命令:javac Test.java(编译成功)
java Test(结果出来:“错误:找不到或无法加载主类 Test”)
第二,你的类名是“Test”,但是你的java文件名就应该是“Test.java”。
第三,在运行里输入cmd敲回车建进入一个控制台的命令框,请输入javac回车查看java有没有
安装好,如有问题有两种肯能:一是根本就没有安装java程序或者安装时没有正确安好,
二是环境变量没有配好。
第四,环境变量配置,变量名Path的值应该是:D:\Program Files\Java\jdk1.7.0\bin
把这个路径放最好放到最前面用;号与其它隔开
变量名CLASSPATH的值是 .; 就这样就可以(当然如果你要用到其它jar包就要配置)
变量名JAVA_HOME的值是 D:\Program Files\Java\jdk1.7.0
第五,编译和运行程序,如果你的Test.java放在D盘根目录下,在运行里输入cmd敲回车建进
入一个控制台的命令窗口,敲“D:”回车,输入javac Test.java 回车,再输入java Test 回车。就这样搞定。
最后,我上次碰到一位朋友和你遇到同样的问题,jdk版本和你用的一样,但是我没有用过1.7版本
后来是他加了我的QQ通过远程连接我帮他弄好了,我发现他有这么几个问题:1.存放java的文件夹名有中文(用中文也可以,不过个人认为最好还是用英文命名文件夹名称)。2.他的path变量配置有多个java的路径,而且没有提前。也就是说:path:D:\Program Files\Java\jdk1.7.0\bin;这项放在最前面。3.因为1.7的版本我没有用过所以我叫他换成了1.6的版本(如果你需要我可以发给你)
希望对你有帮助! 参考技术A
该如何解决呢?解决办法如下:
1.由于是在运行阶段出现的问题,那么可能是环境变量配置不当的问题,即可能是classpath路径配置错误,而导致.class文件无法加载。那么此时你可以检查是否配置好classpath路径,一般来说classpath路径配置如下:
.;%java_home%\\lib;%java_home%\\lib\\tools.jar; (注意前面的 . 以及 ; 缺一不可)
其中.表示当前路径,;表示分隔符。
2.如果你试过了很多次,classpath也配置对了,依旧出现这个错误,注意你使用的测试代码,是否在某一个包名的下面;
比如说如下测试代码:
在文件所在的当前目录下,运行javac TestPlusPlus.java编译成功,生成TestPlusPlus.class文件,这个时
候,你用javaTestPlusPlus想运行程序,总会出现”找不到或无法加载主类“的错误。这个时候要注意,
之所以找不到,是因为TestPlusPlus在HelloWorld包名的下面。
解决办法:
1.去掉 ”package HelloWorld;“ 重新用javac 编译TestPlusPlus.java,再运行javaTestPlusPlus就可以了。
2.新建一个包名一样的文件夹,在本例中,为建立一个HelloWorld的文件夹,把TestPlusPlus.java文件移到该目录下。
然后在HelloWorld文件夹的平级下,打开DOS命令窗口,运行javacHelloWorld/TestPlusPlus.java编译程序,
运行javaHelloWorld/TestPlusPlus(或者javaHelloWorld.TestPlusPlus也可以),则可以运行含有包名的java程序。
注意:包名不要含有'.'(点),' '(空格)等特殊符号,这样的话命令行无法判断包名与java程序名的分割点在哪里,
从而还是找到或者无法加载主类。
原理说明:
java程序运行class文件,对于有包名的类,java把包名当成文件夹处理."包名+类名"相当于"文件夹目录+类名"来寻找类。
参考技术B 回答你好
1.首先我们先建一个java文件,写入如下图所示的代码2.接着打开CMD命令界面,用javac命令编译一下java文件3.接着用java命令执行一下编译后的内容,这个时候就报出了找不到或无法加载主类这个问题4.接下来我们将代码中的顶部package内容去掉,如下图所示5.在重新编译执行代码,这个时候就通过了,如下图所示6.最后你还可以将package包创建出来,将java文件放进去也可以
提问没看懂,我cmd java可以运行, javac报错找不到或无法加载主类
回答javac编译成功,但是用Java运行class文件出现“找不到或无法加载主类” 的问题吗
最容易因为大意出错的地方就是你java后面加了.class后缀原因是你java后tab键是默认给你加后缀的,所以建议最先检查下:(1)javac后文件加后缀.java例如 javac main.java(2)java后不加后缀.class 例如 Java main
在classpath的最前面要加一个本目录路径,用.表示,由于后面还有java的dt和tools两个路径,所以.后要加;进行分隔表示。例如:.;D:\\Java\\jdk1.8.0_11\\lib\\tools.jar;D:\\Java\\jdk1.8.0_11\\lib\\dt.jar 特别注意路径最前面的>>>>>.;<<<<<<即加粗部分其他也就是path和JAVA_HOME设置:JAVA_HOME:D:\\Java\\jdk1.8.0_11;Path:%JAVA_HOME%\\bin;%JAVA_HOME%\\jre\\bin;(注:设了JAVA_HOME后,CLASSPATH可以改成:对照上例:.;%JAVA_HOME%\\lib \\tools.jar;%JAVA_HOME%\\lib\\tools.jar)
在cmd下运行javac 和java的时候,必须在该java文件的目录下运行,这样生成的class也在该目录下,java的时候也会第一个就在本目录下找class文件,就不会提示找不到了。这个cmd运行路径由于一般不太注意,输入cmd就会直接到c:\\个人文件夹下,而一般的java文件会用其它软件编写,放在选定的路径下,这两个路径很少能主动重合,一运行当然找不到了,但是javac能认到,不知为什么java就提示找不到?这点有点奇怪。网上各种解决方法里很少注意到其实就是这个小问题造成的找不到类,都想当然的以为是在java源文件路径下运行java,那当然就找不到基本问题所在了。
如果1、2、3都做了还是没变化,那就是该计算机改了环境变量后需要重新启动下让新的设置生效,重启下即可。
参考技术C 加上主类public static void main(String[] args)
参考技术D
该如何解决呢?解决办法如下:
由于是在运行阶段出现的问题,那么可能是环境变量配置不当的问题,即可能是classpath路径配置错误,而导致.class文件无法加载。那么此时你可以检查是否配置好classpath路径,一般来说classpath路径配置如下:
.;%java_home%\\lib;%java_home%\\lib\\tools.jar; (注意前面的 . 以及 ; 缺一不可)
其中.表示当前路径,;表示分隔符。
2.如果你试过了很多次,classpath也配置对了,依旧出现这个错误,注意你使用的测试代码,是否在某一个包名的下面;
比如说如下测试代码:
在文件所在的当前目录下,运行javac TestPlusPlus.java编译成功,生成TestPlusPlus.class文件,这个时
候,你用javaTestPlusPlus想运行程序,总会出现”找不到或无法加载主类“的错误。这个时候要注意,
之所以找不到,是因为TestPlusPlus在HelloWorld包名的下面。
解决办法:
以上是关于java中无法加载或找不到主类的主要内容,如果未能解决你的问题,请参考以下文章