Java 中“Could not found or load main class”错误的原因是什么?


编写 Java 程序/类时,首先需要使用 javac 命令进行编译,如下所示:

javac [name of the class].java

如果程序编译没有错误,则会创建一个名为 .class 的文件(字节码),然后需要使用 java 命令(JVM)执行它,如下所示:

java [class name]

示例

假设我们创建了一个简单的 Calculator 类,它在名为 Calculator.java 的文件中添加了两个或三个数字,路径为 D:\sample,如下所示:

public class Calculator {
   int addition(int a , int b){
      int result = a+b;
      return result;
   }
   int addition(int a , int b, int c){
      int result = a+b+c;
      return result;
   }
   public static void main(String args[]){
      Calculator obj = new Calculator();
      System.out.println(obj.addition(12, 13));
      System.out.println(obj.addition(12, 13, 15));
   }
}

编译

首先,我们应该使用 javac 命令编译  Calculator.java,如下所示:

D:\sample>javac Calculator.java

如果此程序在没有编译错误的情况下执行,则将在当前文件夹中生成一个名为 Calculator.class 的 .class 文件,如下所示:

执行

然后,我们可以使用 java 命令(JVM)执行生成的字节码,如下所示:

java Calculator

输出

25
40

“Could not found or load main class” 错误

在执行期间,当 JVM 未找到指定名称的 .class 文件时,会发生运行时错误,提示“Could not found or load main class” 错误,如下所示:

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

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

如果您在执行程序时看到此错误,则:

  • 类名错误 - 您可能指定了错误的类名。
  • 大小写错误 - 您需要使用相同的案例指定类名,例如 Example.java 与 example.java 不同。
  • 包错误 - 您可能在包中创建了 .class 文件,并尝试在没有包名或使用错误的包名的情况下执行。

示例

package sample.example;
class Calculator {
   int addition(int a , int b){
      int result = a+b;
      return result;
   }
   public static void main(String args[]){
      Calculator obj = new Calculator();
      System.out.println(obj.addition(12, 13));
   }
}

在这里,我们在程序中指定了一个包名并将其编译,如下所示:

D:\sample>javac -d . Calculator.java

在执行时,我们需要指定 .class 文件所在的正确包名,如下所示:

D:\sample>java sample.example.Calculator
25
  • 包含 .class 扩展名 - 在执行文件时,无需在程序中包含 .class 扩展名,只需指定类文件的名称即可。
D:\sample>java Calculator.class
Error: Could not find or load main class Calculator.class
Caused by: java.lang.ClassNotFoundException: Calculator.class

更新于: 2020年7月2日

1K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告