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

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


当前回答

如果此问题与Eclipse相关:

尝试将项目添加到类路径中。

请参见下图:

这种方法对我有效。

其他回答

如果您的情况与我的情况特别相似,这可能会对您有所帮助:作为初学者,我在尝试运行Java程序时也遇到了这个问题。

我是这样编译的:

javac HelloWorld.java

我也尝试使用相同的扩展名运行:

java Helloworld.java

当我删除.java并重写类似javaHelloWorld的命令时,程序运行得很好。:)

在我的例子中,出现错误是因为我提供了源文件名而不是类名。

我们需要向解释器提供包含main方法的类名。

使用关键字“package”

如果源代码中有package关键字(主类在包中定义),则应使用类的全名(packageName.MainClassName)在分层目录中运行它。

假设有一个源代码文件(Main.java):

package com.test;

public class Main {

    public static void main(String[] args) {
        System.out.println("salam 2nya\n");
    }
}

要运行此代码,应将Main.Class放在类似于包的目录中:

C: \Users\workspace\testapp.com\test\Main.Java

然后将终端的当前目录更改为项目的根目录:

cd C:\Users\workspace\testapp

最后,运行代码:

java com.test.Main

没有关键字“package”

如果您的源代码名称中没有任何包,那么可能是您使用了错误的命令。假设您的Java文件名为Main.Java,编译后:

javac Main.java

编译后的代码将是Main.class

如果使用以下方法调用它,则会出现该错误:

java Main.class

相反,请使用以下方法:

java Main

在Java中,当您有时使用Java解释器可执行文件从命令行运行JVM,并试图从具有公共静态void main(PSVM)的类文件启动程序时,即使JVM的类路径参数是准确的,并且类文件存在于类路径中,也可能会遇到以下错误:

错误:未找到或加载主类

如果无法加载带有PSVM的类文件,就会发生这种情况。一个可能的原因是该类可能正在实现一个接口或扩展不在类路径上的另一个类。通常,如果类不在类路径中,则抛出的错误会指示这一点。但是,如果正在使用的类被扩展或实现,Java将无法加载该类本身。

参考:https://www.computingnotes.net/java/error-main-class-not-found-or-loaded/

我在做mvn eclipse后遇到了这个错误:eclipse。这有点搞乱了我的.classpath文件。

我不得不将.classpath中的行从

<classpathentry kind="src" path="src/main/java" including="**/*.java"/>
<classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>

to

<classpathentry kind="src" path="src/main/java" output="target/classes" />
<classpathentry kind="src" path="src/main/resources" excluding="**"  output="target/classes" />