如何解决Java中的“找不到或加载主类包”?

编写Java程序后,需要使用javac命令对其进行编译,这将向您显示发生了编译时错误(如果有)。

解决它们并完全编译成功后,将在当前文件夹中生成一个扩展名为.class的可执行文件,其名称与类名相同。

然后您需要使用java命令执行它-

java class_name

在执行期间,当JVM找不到具有指定名称的.class文件时,会出现运行时错误,提示“找不到或加载主类”错误,-

D:\sample>java Example
Error: Could not find or load main class Example
Caused by: java.lang.ClassNotFoundException: Example

为避免此错误,您需要指定当前目录中.class文件的绝对(包括软件包)名称(仅名称)。

以下是可能发生此错误的方案-

错误的类名-您可能指定了错误的类名。

class Example {
   public static void main(String args[]){
      System.out.println("This is an example class");
   }
}

错误

D:\>javac Example.java
D:\>java Exmple
Error: Could not find or load main class Exmple
Caused by: java.lang.ClassNotFoundException: Exmple

解决方案-在这个类名中拼写错误,我们需要对其进行更正。

D:\>javac Example.java
D:\>java Example
This is an example class

错误的大小写-您需要使用相同的大小写指定类的名称Example.java与example.java不同。

class Example {
   public static void main(String args[]){
      System.out.println("This is an example class");
   }
}

错误

D:\>java EXAMPLE
Error: Could not find or load main class EXAMPLE
Caused by: java.lang.NoClassDefFoundError: Example (wrong name: EXAMPLE)

解决方案-在这种情况下,该类名的大小写错误,应进行修饰。

D:\>javac Example.java
D:\>java Example
This is an example class

错误的软件包-您可能在软件包中创建了.class文件,并尝试在没有软件包名称或软件包名称错误的情况下执行。

package sample;
class Example {
   public static void main(String args[]){
      System.out.println("This is an example class");
   }
}

错误

D:\>javac -d . Example.java
D:\>java samp.Example
Error: Could not find or load main class samp.Example
Caused by: java.lang.ClassNotFoundException: samp.Example

解决方案-在这种情况下,我们提到了错误的程序包名称。在执行时,我们需要指定.class文件所在的正确程序包名称,如下所示:

D:\>javac -d . Example.java
D:\>java sample.Example
This is an example class

包含.class扩展名-执行文件时,无需在程序中包含.class扩展名,只需指定类文件的名称即可。

错误

D:\sample>java Example.class
Error: Could not find or load main class Example.class
Caused by: java.lang.ClassNotFoundException: Example.class

解决方案-执行程序时不需要扩展名 .class

D:\sample>java Example
This is an example class