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

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


当前回答

默认情况下,Java使用。,当前工作目录,作为默认CLASSPATH。这意味着,当您在提示符处键入命令(例如javaMyClass)时,该命令将被解释为您键入了java-cp。我的班级。你看到-cp和MyClass之间的点了吗?(cp是较长类路径选项的缩写)

这在大多数情况下都是足够的,在您尝试向CLASSPATH添加目录之前,一切似乎都很正常。在大多数情况下,当程序员需要这样做时,他们只需运行一个命令,比如set CLASSPATH=path \to\some\dir。此命令创建一个名为CLASSPATH的新环境变量,该变量的值为path\to\some\dir,或者如果以前已设置CLASSPATH,则将其值替换为path \to\sme\dir。

完成后,您现在有了一个CLASSPATH环境变量,Java不再使用默认的类路径(.),而是使用您设置的类路径。所以第二天你打开编辑器,写一些java程序,cd到你保存它的目录,编译它,并尝试用命令javaMyClass运行它,你会得到一个很好的输出:找不到或加载主类。。。(如果您的命令以前工作得很好,现在得到了这个输出,那么您可能就是这样)。

发生的情况是,当您运行命令javaMyClass时,java会在CLASSPATH中设置的一个或多个目录中搜索名为MyClass的类文件,而不是当前工作目录,因此在那里找不到您的类文件并因此发出抱怨。

你需要做的是添加。这可以通过命令集CLASSPATH=%CLASSPATH%;来完成;。(注意分号后的点)。在纯英语中,此命令表示“选择CLASSPATH(%CLASSPATH%)的初始值,将.添加到(;.),并将结果分配回CLASSPATH”。

瞧,您再次能够像往常一样使用命令javaMyClass。

其他回答

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

错误:未找到或加载主类

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

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

在IntellijIDE中,选择run/debug>>编辑配置,然后为构建和运行菜单选择适当的JDK。

如果使用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>

如果此问题与Eclipse相关:

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

请参见下图:

这种方法对我有效。

在Windows上放置。;在开头的CLASSPATH值处。

这个(dot)表示“查看当前目录”。这是一个永久的解决方案。

此外,您还可以通过设置CLASSPATH=%CLASSPATH%;将其设置为“一次”;。。这将在cmd窗口打开时持续。