问题:
使用cmd,输入 javac Hello.java 可以正常编译,然后输入 java Hello 就报错:“错误: 找不到或无法加载主类 Hello”。
解决:(三者选其一)
- 删除环境变量 CLASSPATH.
- 修改环境变量 CLASSPATH,将 Hello.class 所在文件目录添加到 CLASSPATH.
- 修改环境变量 CLASSPATH,将 "." 添加到 CLASSPATH.
解释:
- 使用cmd, 输入 java Hello,java.exe 会启动 JVM, 而后 JVM 启动 ClassLoader, ClassLoader会去寻找 Hello.class,若找到则执行,否则报错。
- ClassLoader 默认情况下从当前目录寻找 Hello.class,也可以指定寻找的位置:添加环境变量CLASSPATH.
- CLASSPATH 是专门指定 ClassLoader 的寻找位置的,添加了 CLASSPATH 之后,无论在哪执行 java xxx 命令,都能从 CLASSPATH 里指定的地方寻找字节码文件。
综上所述:
- 删除环境变量 CLASSPATH,ClassLoader 默认从当前路径寻找 Hello.class;
- 修改环境变量 CLASSPATH,将 Hello.class 所在文件目录添加到 CLASSPATH,如:"E:\Java\Learning\JavaCode",则 ClassLoader从 JavaCode 中寻找 Hello.class;
- 修改环境变量 CLASSPATH,将 "." 添加到 CLASSPATH,ClassLoader 也可从当前路径寻找 Hello.class,路径中 ".." 表示上级目录,路径中 “.” 表示当前自录。
- 修改环境变量 CLASSPATH 为常见的配置方法:
.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;
其中 JAVA_HOME 是JDK 的安装路径。
关于 Path 和 CLASSPATH 的内容可以参考:
Java学习笔记:Path 和 CLASSPATHhttp://t.csdnimg.cn/teaMZ
参考: