首页 >> 精选知识 >

Java(找不到或无法加载主类的修复方法)

2023-06-11 10:16:33 来源: 用户: 

大家好,综合小编来为大家讲解下Java,找不到或无法加载主类的修复方法这个很多人还不知道,现在让我们一起来看看吧!

在本文中,我们将讨论找不到主类的可能原因。此外,我们将了解如何修复它们。

抽样程序

我们将从HelloWorld计划开始:

(资料图片)

public类Hello world { public static void main(String[]args){ system。出去。println(' Hello world.');}}现在让我们编译它:

$ javac的HelloWorld.java在这里,编译器将为我们的程序生成一个. class文件。这个。类文件将在同一个目录中生成。该类文件将与Java程序中给出的类名同名。

这个。类文件是可执行的。

在接下来的部分中,我们将运行它。类文件,并尝试理解“没有找到或加载主类”错误的可能原因。

错误的类名

来运行。类文件由Java编译器生成,您可以使用以下命令:

Java。类filename运行我们的程序:

$ java helloworldError: Unable to find or load the main class helloworld Yes, it failed.

The error is "the main class helloworld cannot be found or loaded", that is, the main class Hello World cannot be found or loaded.

如前所述,编译器将生成一个与程序中的Java类同名的. class文件。所以在我们的例子中,主类的名字是HelloWorld,而不是helloworld,这是区分大小写的。

让我们以正确的方式再试一次:

$ java HelloWorldHello world.这一次它运行成功。

文件扩展名

要编译Java程序,必须提供文件名及其扩展名(.java):

$ javac HelloWorld.java但是要运行.class文件,我们需要提供类名,而不是文件名。因此不需要提供.class扩展:

$ java HelloWorld.classError: Could not find or load main class HelloWorld.class同样,让我们使用正确的类名运行程序:

$ java HelloWorld Hello world.Java包名称

在Java中,我们将类似的类放在一起,称之为包。

让我们把HelloWorld类移到com.baeldung包:

package com.baeldung;public class HelloWorld { public static void main(String[] args) { System.out.println('Hello world.'); }}现在,

$ java HelloWorldError: Could not find or load main class HelloWorld但我们再次得到错误“找不到或加载主类HelloWorld”!

让我们试着理解我们错过了什么。

要运行包中的Java类,必须提供其完全限定名。所以在我们的例子中,HelloWorld的完全限定名是:com.baeldung.HelloWorld.

现在,当我们创建com.baeldung包时实际上我们创建了一个文件夹结构,如:

com/baeldung/HelloWorld.java首先,让我们尝试从com/baeldung目录运行程序:

$ java com.baeldung.HelloWorldError: Could not find or load main class com.baeldung.HelloWorld尽管如此,

我们还是无法运行我们的程序。

在这里,当我们指定完全限定类名时:com.baeldung.HelloWorld,Java试图找到HelloWorld.class类文件在com/baeldung中,在我们运行程序的目录下。

由于我们已经在com/baeldung中,Java无法找到并运行HelloWorld程序。

现在,让我们回到父文件夹并运行它:

$ java com.baeldung.HelloWorldHello world.是的,我们再次能够向世界问好。

类路径无效

在继续之前,让我们首先了解什么是类路径classpath——它是当前运行的JVM可用的一组类。

我们使用classpath变量告诉JVM在文件系统上的何处找到.class文件。

在运行程序时,我们可以使用-classpath选项提供类路径。例子:

java -classpath /my_programs/compiled_classes HelloWorld在这里,

Java将寻找HelloWorld.class类文件在/my_programs/compiled_classes文件夹中,这个文件夹的名称是我们刚刚编出来的。默认情况下,

classpath变量设置为“.”,表示当前目录。

在上面的部分中,我们更改了目录以运行程序。但是如果我们想从其他文件夹运行它呢?这时classpath变量可以帮助我们。

要从com/baeldung目录运行我们的程序,我们可以简单地说,我们的类路径是向上的两个目录—每个包部分一个:

$ java -claspath ././com.baeldung.HelloWorldHello world.这里,“…”表示父目录。在本例中,“././”表示包层次结构的顶部。

本文[高级伪原创标题]到此分享完毕,希望对大家有所帮助。

  免责声明:本文由用户上传,与本网站立场无关。财经信息仅供读者参考,并不构成投资建议。投资者据此操作,风险自担。 如有侵权请联系删除!

 
分享:
最新文章