新Java开发人员遇到的一个常见问题是,他们的程序无法运行,并显示错误消息:无法找到或加载主类。。。

这意味着什么,是什么导致的,你应该如何解决?


当前回答

当相同的代码在一台电脑上运行,但在另一台电脑中显示错误时,我找到的最佳解决方案是如下编译:

javac HelloWorld.java
java -cp . HelloWorld

其他回答

有时,可能导致问题的原因与主课无关,我必须通过艰难的方式找到答案。这是我移动的参考库,它给了我:

无法找到或加载主类xxx Linux

我只是删除了那个引用,再次添加,它再次运行良好。

当相同的代码在一台电脑上运行,但在另一台电脑中显示错误时,我找到的最佳解决方案是如下编译:

javac HelloWorld.java
java -cp . HelloWorld

根据错误消息(“找不到或加载主类”),有两类问题:

找不到Main类无法加载Main类(在接受的答案中未充分讨论此情况)

当完全限定类名中存在拼写错误或语法错误,或者提供的类路径中不存在Main类时,找不到Main类。

当无法启动类时,无法加载Main类。通常,主类扩展另一个类,而该类不存在于提供的类路径中。

例如:

public class YourMain extends org.apache.camel.spring.Main

如果不包括骆驼弹簧,将报告此错误。

您确实需要从src文件夹中执行此操作。在那里键入以下命令行:

[name of the package].[Class Name] [arguments]

假设您的类名为CommandLine.class,代码如下:

package com.tutorialspoint.java;

    /**
     * Created by mda21185 on 15-6-2016.
     */

    public class CommandLine {
        public static void main(String args[]){
            for(int i=0; i<args.length; i++){
                System.out.println("args[" + i + "]: " + args[i]);
            }
        }
    }

然后你应该cd到src文件夹,你需要运行的命令如下:

java com.tutorialspoint.java.CommandLine this is a command line 200 -100

命令行上的输出将是:

args[0]: this
args[1]: is
args[2]: a
args[3]: command
args[4]: line
args[5]: 200
args[6]: -100

如果使用Maven构建JAR文件,请确保在pom.xml文件中指定主类:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>class name us.com.test.abc.MyMainClass</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>