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 命令也可以成功执行。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?