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 移动字节码文件到相应目录下

  1. 进入到字节码文件所在目录,创建 2层目录 com/ian/

  2. 将字节码文件 Class1.class 移动到 com/ian/ 中。

  3. 最后可以执行了,命令如下:

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命令的使用的一点注意事项。下次聊。

posted @ 2022-04-22 00:04  mediocrep  阅读(249)  评论(0编辑  收藏  举报
既然选择了远方,便只顾风雨兼程!