0

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

    2023.06.06 | admin | 144次围观

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

    这很有可能是你的程序中有包声明,即有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

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

    版权声明

    本文仅代表作者观点。
    本文系作者授权发表,未经许可,不得转载。

    发表评论