Java 找不到或者无法加载主类
1 测试Test 类的时候突然遇到一个很奇怪的问题,网上搜了很多资料才找到解决办法,大多数情况是因为类加了包名编译,执行的时候没有到包下去执行。与我遇到的情况不一样。
问题:写了一个测试类Test,在cmd下javac Test .java 能通过编译,并且生成了Test .class 文件,但是在执行时却报错:
java Test
c:\>java Test
错误: 找不到或无法加载主类 Test
可以肯定环境变量没有配错,因为直接执行java 与javac 命令都没有问题。很多朋友都遇到过这个问题,原因是类加了包名导致 .Java文件与 .class文件不在同一路径引起的,而我的这个测试类没有加任何包名。
解决方案:
① 可以通过 java -cp %classpath; Test 命令来执行,结果正确:
c:\>java -cp %classpath; Test
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 命令也可以成功执行。
最新文章
- Android中AlarmManager使用示例(持续更新,已经更改)
- C++基础知识(5)---类和对象
- UI控件(UIButton)
- SQL的常用语句
- ios滤镜
- iOS 格式化输出符号与类型转换
- Linux(Centos)之安装tomcat并且部署Java Web项目(转)
- Linux下多核环境Erlang的SMP測试
- Nyoj 吝啬的国度(图论&;&;双DFS)
- 05 Linux字符驱动---静态注册
- eclipse 下使用git clone
- step into,step over,step out.
- 利用Audacity软件分析ctf音频隐写
- WordPress版微信小程序2.1.5版发布
- Maven的继承与聚合——多模块开发
- NVIDIA GeForce GTX 960 设备是不可移动的,无法弹出
- SQL SERVER回滚恢复误操作的数据
- mysql 如何解决字段不区分大小写的问题
- XuLA/XuLA2
- 面试题5:JS实现从尾到头打印单链表