Java 找不到或者无法加载主类

Posted 知行合一

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 找不到或者无法加载主类相关的知识,希望对你有一定的参考价值。

 

1 测试Test 类的时候突然遇到一个很奇怪的问题,网上搜了很多资料才找到解决办法,大多数情况是因为类加了包名编译,执行的时候没有到包下去执行。与我遇到的情况不一样。

  问题:写了一个测试类Test,在cmd下javac Test .java 能通过编译,并且生成了Test .class 文件,但是在执行时却报错:

  java Test

1 c:\>java Test
2 错误: 找不到或无法加载主类 Test

可以肯定环境变量没有配错,因为直接执行java 与javac 命令都没有问题。很多朋友都遇到过这个问题,原因是类加了包名导致 .Java文件与 .class文件不在同一路径引起的,而我的这个测试类没有加任何包名。

解决方案:

  ① 可以通过 java -cp %classpath; Test  命令来执行,结果正确:

1 c:\>java -cp %classpath; Test
2 Hello Servlet

② 使用echo %classpath 或者 set classpath,查看classpath环境变量,发现只显示当前用户的CLASSPATH值,系统里的CLASSPATH变量没有JDK lib 的绝对路径: .;D:\Program Files\Java\jdk1.7.0_80\lib; 。仔细回想,以前刚开始安装完JDK时,并没有配置过CLASSPATH,当时编译通过之后,可以在当前文件夹下执行对应的 .class文件的。

 

为什么现在又报错了呢,仔细检查了一下发现系统变量里配置了CLASSPATH,但是里面没有JDK的lib路径, .;D:\Program Files\Java\jdk1.7.0_80\lib; ,当初为了能够在系统的任何位置访问Tomcat下的servlet-api.jar 包,给系统变量里配置了CLASSPATH,到这里明白了为什么会出现上面的问题。

安装完JDK之后,在系统变量里要吗就不配置CLASSPATH(即系统变量里完全没有这个变量)如果添加了CLASSPATH 变量就一定要给它配置上JDK的lib绝对路径.

经过验证,从系统变量里删除CLASSPATH,java Test 命令可以成功执行; 如果添加CLASSPATH 就要在最前面添加上JDK的lib绝对路径:.;D:\Program Files\Java\jdk1.7.0_80\lib;  java Test 命令也可以成功执行。

 

以上是关于Java 找不到或者无法加载主类的主要内容,如果未能解决你的问题,请参考以下文章

java运行显示“找不到或无法加载主类”

错误:找不到或无法加载主类

java无法找到或加载主类

java中找不到主类是啥问题

java8入门 错误:找不到或者无法加载主类

找不到或无法加载主类java(找不到或无法加载主类helloworld)