Java基础:java命令后面的class类的路径问题
今天来聊聊java命令,后面跟字节码文件的话,如何书写路径的问题。
虽然平时很少在命令行中使用java命令了,都是使用IDE来运行java程序,但是偶尔还是会用到,而此时,有可能会报错:错误: 找不到或无法加载主类 Class1
。
明明是进入到java的字节码文件(.class文件)所在目录中,然后才执行 java Class1
的,为啥还报错找不到类。下面我们来分析下。
1 问题
假设有一个类,类名为 Class1.java,其所在路径为 /develop
代码如下:
package com.ian;
public class Class1 {
public static void main(String[] args) {
System.out.println("hello world!");
}
}
那么在命令行中运行命令:
# 编译源码,成功
javac Class1.java
# 执行字节码,报错:错误: 找不到或无法加载主类 Class1
java Class1
2 原因
是因为源码中有 设置包路径的语句 package com.ian;
。
此时,java命令会到当前目录下的 com/ian/目录中查找字节码文件 Class1.class,如果找到了就能执行,否则报上述错误。
3 解决方案
3.1 移动字节码文件到相应目录下
-
进入到字节码文件所在目录,创建 2层目录 com/ian/
-
将字节码文件 Class1.class 移动到 com/ian/ 中。
-
最后可以执行了,命令如下:
java com.ian.Class1
# 输出: hello world!
注:执行命令也可以这么写 java com/ian/CLass1,或这么写 java com.ian/Class1,或这么写 java com/ian.Class1
所以大家发现了什么,在java命令中,在这种情况下, . 和 / 是等价的。
3.2 去掉源码中的package
语句
此时源码修改为:
public class Class1 {
public static void main(String[] args) {
System.out.println("hello world!");
}
}
然后,编译后,执行命令: java Class1
即可。
4 完工
好了,今天聊了一下java命令的使用的一点注意事项。下次聊。