java报错-找不到或无法加载主类(Error Could not find or load main class)

此文首发于我的个人博客:zhang0peter的个人博客


比如说test.java

package test;
public class test{
    public static void main(String[] args) {
        System.out.println("Hello Word !");
    }
}

运行java文件需要先编译:

javac test.java

然后运行:

java test

有时在运行时,程序会报错:找不到或无法加载主类(Error: Could not find or load main class)

这个问题有以下一些原因:

CLASSPATH配置问题

CLASSPATH也就是Java运行时的环境变量,里面需要有个点,也就是”.”,表示当前路径。

Windows下在cmd中使用命令查看环境变量的设置

echo %PATH%

Linux下使用如下命令查看环境变量的设置

echo $PATH

package问题

大部分Java代码的开头都带有package的声明,这就导致编译完成后类的名字是自带package声明的。

解决方法1:删除package声明

只要删除了package声明,就没有这个问题了,麻烦的是如果文件很多,那么要删除很多文件。

解决方法2:指定包名

运行的时候指定包名即可运行,需要注意的是指定的包名是文件夹目录

比如说:

javac test.java -d .
java test.test

这里的编译参数”-d .“意思是根据包名新建一个目录用于存放编译后的结果,编译完成后本目录下回多出一个文件夹test(文件夹名由包名决定),运行时指定包名即可运行。