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

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


当前回答

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

错误:未找到或加载主类

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

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

其他回答

首先使用此命令设置路径;

set path="paste the set path address"

然后需要加载程序。在存储的驱动器中键入“cd(文件夹名)”并编译它。例如,如果我的程序存储在D驱动器上,请键入“D:”,然后按enter键并键入“cd”(文件夹名称)。

对于数据库连接,我得到了这个。我刚刚在类路径中添加了以下内容:

export CLASSPATH=<path>/db2jcc4.jar:**./**

我在这里附上了。/最后,这样我的类在加载时也会被识别。

现在只需运行:

java ConnectionExample <args>

它工作得很好。

我遇到了同样的问题,最终发现了我的错误:)我使用此命令进行编译,并且运行正常:

javac -cp "/home/omidmohebbi/AAAATest/jars/core-1.7.jar:/home/omidmohebbi/AAAATest/jars/javase-1.7.jar:/home/omidmohebbi/AAAATest/jars/qrgen-1.2.jar" qrcode.java

但这个命令对我不起作用(我找不到或加载主类qrcode):

java -cp "/home/omidmohebbi/AAAATest/jars/core-1.7.jar:/home/omidmohebbi/AAAATest/jars/javase-1.7.jar:/home/omidmohebbi/AAAATest/jars/qrgen-1.2.jar" qrcode

最后,我只在类路径末尾添加了“:”字符,问题就解决了:

java -cp "/home/omidmohebbi/AAAATest/jars/core-1.7.jar:/home/omidmohebbi/AAAATest/jars/javase-1.7.jar:/home/omidmohebbi/AAAATest/jars/qrgen-1.2.jar:" qrcode

关于外部库的回答-

编译:

javac -cp ./<external lib jar>: <program-name>.java

执行:

java -cp ./<external lib jar>: <program-name>

上述方案在OS X和Linux系统中运行良好。注意类路径中的:。

这是一个具体的案例:

Windows(通过Windows7测试)不接受类和包名称中的特殊字符(如á)。不过,Linux确实如此。

我在NetBeans中构建.jar并尝试在命令行中运行时发现了这一点。它在NetBeans中运行,但不在命令行上运行。