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

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


当前回答

我在IntelliJ中创建的演示程序遇到了这个问题。

解决这个问题有两个关键点:

程序的包名终端/cmd提示符的当前工作目录

我的演示程序:

package io.rlx.tij.c2;

public class Ex10 {
    public static void main(String[] args) {
        // do something
    }
}

源代码路径:

../projectRoot/src/main/java/io/rlx/tij/c2/Ex10.java

转到java目录:cd/项目根/src/main/java编译到类:javac/io/rlx/tij/c2/Ex10.java运行程序:java io.rlx.tij.c2.Ex10

如果我在..中运行程序/projectRoot/src/main/java/io/rlx/tij/c2或我在没有包名的情况下运行它,我将收到以下错误:错误:无法找到或加载主类。

其他回答

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

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

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

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

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

场景:使用命令提示符(Windows中的CMD)编译并运行一个简单的“java”程序,该程序只有“Main.java”文件,并指定了“packagemain”。

源文件路径:

某些项目名称文件夹\src\main\main.java

目标文件夹:

某些项目名称文件夹\dest

目标文件路径(文件夹'\main'和文件'\main.class'将由'javac'生成):

某些项目名称文件夹\dest\main\main.class

Main.java如下:

package main;

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

编制:

// 'javac' compiler will produce 'Main.class' in the 'dest\main' folder.
// 'main' folder is created because in the source file(in our case: 'Main.java') is
// specified 'package main'.

javac -d ./dest ./src/main/Main.java

运行编译文件(在本例中为“Main.class”):

// '-cp'(is the same as '-classpath')
// './dest'(means destination folder, where resides compiled 'Main.class').
// 'main.Main'(means 'package' 'main', which contains class 'Main'('Main.class'))
// WARNING: when run 'java' class, MUST NOT type extension '.class'
//          after 'class name
//          (in our case: 'main.Main'(<package>.<class-name>) WITHOUT extension 
//           '.class').

java -cp ./dest main.Main

// Hello world

这里的所有答案似乎都针对Windows用户。对于Mac,类路径分隔符是:,而不是;。作为一个错误,使用;如果从Windows到Mac,则很难发现。

下面是相应的Mac命令:

java -classpath ".:./lib/*" com.test.MyClass

在本例中,包是com.test,类路径中还包含一个lib文件夹。

解决“无法加载主类错误”

看完所有的答案后,我发现大多数答案都不适合我。所以我做了一些研究,以下是我得到的答案。只有在步骤1不起作用时才尝试此操作。

尝试安装JRE 32或64。如果它不起作用,打开并转到C:\Program Files(x86)\Java或C:\Program Files\Javai.打开jdk文件夹,然后打开bin文件夹。二。复制路径并将其添加到环境变量中。确保用分号;分隔变量;。例如,“C:\Yargato\bin;C:\java\bin;”。如果不这样做,将导致更多错误。iii.转到jre文件夹并打开其bin文件夹。iv.在这里搜索rt.jar文件。我的是:C: \程序文件(x86)\Java\jre1.8.0_73\lib\rt.jar复制并在环境变量下搜索类路径变量并将其粘贴在那里。v.现在重新启动cmd并再次尝试运行。错误将消失。vi.我将发布我的YouTube视频教程的链接。