1.问题描述:
今天用以下代码想测试命令行传参时
package exception.review;
public class Test {
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
}
}
在java Test(.class)的步骤时遇到了如下报错:找不到或无法加载族类Test
2. 解决方案:
在执行class文件的时候,我们需要把路径用
命令行 cd ..
切换到src目录下
然后再通过 包名 + 类名 (可以在文件中查看路径)的方式来找到class文件
如下:
问题解决
3. 原理:
java执行class文件对package的路径是强依赖的
它在执行的时候会严格以当前用户路径为基础
按照package指定的包路径转化为文件路径去搜索class文件
原理参考:使用java命令运行class文件提示“错误:找不到或无法加载主类“的问题分析 - 大C - 博客园
总结下就是:
如果你不是在src目录下使用包名+类名进行查找
那么操作系统会默认给你添加两个路径
第一个就是从src到class之间的文件名
第二个就是你的包名+类名
然后把这两个路径拼接起来
这样就会造成路径重复,从而找不到主类,造成错误!
所以需要在src目录下进行查找