java命令报错-找不到或无法加载主类
来源:互联网 发布:转行数据分析师 编辑:程序博客网 时间:2024/05/19 20:18
在学习java和算法过程中,有时需要使用java的编译和执行命令。但是有时总是会出现这种场景:javac命令编译成功了,但使用java命令执行二进制class文件时,报找不到或者无法加载主类的错误,如下图。谷歌百度了一把,发现网上说的那些都是扯淡的,没有一个说到点子上了。经过思考实践看书,总算知道原因了。
首先,我们先看下javac和java命令的区别,具体可以参考《java核心技术卷二》的4.7.3章节(将类放入包中)和4.8章节(类路径)。
1. javac命令,编译源文件.java,产生二进制.class文件。这个命令是有javac编译器实现的,执行时会去查找类。我们都会在环境变量中设置classpath,这个类路径就是javac命令查找文件的顺序。例如classpath设置为:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;, 那么javac命令时,首先查找当前目录,如果没有类文件,则查找第二个路径,以此类推知道找到,否则报编译错误。javac命令查找类路径是以文件分隔符”\”查找的。
2. java命令,执行二进制class文件。该命令是java解释器命令,执行java命令也是同样会去查找类路径。就拿这个例子来说,执行java Test命令的查找类的步骤为,首先查找当前目录下的包路径,查看是否有该类,如果没有查找%JAVA_HOME%\lib\包路径下有无该类,其次查找%JAVA_HOME%\lib\tools.jar\包路径下有无该类。java命令加载类路径(包路径)是通过“.”或者“\”来作为分隔符的,
通过上面两个命令的区别,很容易看出来,上面截图中执行的java Test,会去该路径下执行Test.class:D:\workspace\practice_JEE\test4\src\com\clq\collection\javacore\com\clq\collection\javacore\javacore\,显然该路径是不存在的,所以会报错。
同理,下面几个路径下执行命令的结果就很容易理解了。
1.不同路径下的javac命令执行结果
2. 不同路径下的java命令执行结果
由此问题可以引申,查阅java编译器、解释器相关内容,后续再学习。
- java命令报错-找不到或无法加载主类
- "java *.java"报错:找不到或无法加载主类
- java报错: 找不到或无法加载主类
- java报错:找不到或无法加载主类
- cmd运行java和javac命令报“找不到符号”或“找不到或无法加载主类”问题
- Java命令行运行报:找不到或无法加载主类
- Java 命令找不到或无法加载主类
- Idea报错: 找不到或无法加载主类
- cmd下运行java程序报错:错误: 找不到或无法加载主类
- cmd命令行中java报错:找不到或无法加载主类 HelloWorld
- eclipse 运行java程序报错 “错误: 找不到或无法加载主类 ”
- DOC下运行java工程报错:找不到或无法加载主类 xxx
- Java程序报错:“找不到或无法加载主类”的解决方法
- java 找不到或无法加载主类
- java 找不到或无法加载主类
- java 找不到或无法加载主类
- java找不到或无法加载主类
- java找不到或无法加载主类
- JVM参数初探
- java 线程协作 join方法
- 【转载】《实践论》
- Java消息摘要算法加密
- MySQL命令行导出数据库
- java命令报错-找不到或无法加载主类
- 小白入门---CSS基础
- 选择排序(内附代码)
- 【Android】Affinity以及Manifest中Activity的属性值介绍
- h5视频播放
- 重建二叉树--已知一个二叉树的前、中序排列,重建出该二叉树。
- DES、AES、RSA等常用加密算法介绍与比较
- Android json数据Log格式化打印
- 评分卡模型开发-基于逻辑回归的标准评分卡实现