找不到或无法加载主类的原因之一

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/WhoisPo/article/details/52349891

先声明,这只是找不到或无法加载主类的原因之一,你在这里并不一定能够找到方法。这个问题可能是有些初学者会犯的,就是我的程序很简单应该没有问题,我的环境变量也配置好了,编译也没有问题,怎么总是在运行的时候出这个问题呢?

这很有可能是你的程序中有包声明,即有package语句,将程序放在了包中。但是你编译的时候没有生成包目录或者运行的时候没有指定包,就会出现这个问题。下面以一个例子说明这个问题。

下面是一个程序,很简单:

package Lee; 

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

打开cmd,转到放程序的目录比如说是dir\下面(该程序的路径为dir\Hello.java),然后执行

javac Hello.java

没有问题,在dir\下面生成了 Hello.class文件(dir\Hello.class)
然后执行这个文件

java Hello

就会蹦出这个错误提示

错误: 找不到或无法加载主类 Hello

这就是因为,在上面的程序中有包声明的语句,将该程序放在了一个叫Lee的包中,而在编译的时候没有生成相应的包层级。应该用下面的方法编译

javac -d . Hello.java

-d .是指明生成的目录为当前目录,也即dir\。运行这个命名后就会在dir\下面生成一个叫Lee的文件夹,文件夹下有一个叫Hello.class的文件(dir\Lee\Hello.class)。

运行该文件时,不要到dir\Lee\下面运行,就在dir\下面运行

java Lee.Hello

现在你应该能够看都程序正确的运行结果了。

猜你喜欢

转载自blog.csdn.net/WhoisPo/article/details/52349891
今日推荐