4年前 (2021-04-30)  Java系列 |   抢沙发  17039 
文章评分 0 次,平均分 0.0

在从系统控制台运行Java类(例如Hello world应用程序)时,我们可能会遇到此错误:Could not find or load main class(找不到或加载主类)。我们得到这个错误是因为我们错误地试图在类中使用java命令运行main()

错误原因-无法找到或加载主类

考虑下面的Java类,它有一个main()方法。我们正在尝试使用命令行执行MainClass这个类。

package com.howtodoinjava.core.basic;
 
public class MainClass 
{
    public static void main(String[] args) 
    {
        System.out.println("Hello, World!"); 
    }
}

如果我们尝试导航到创建.java文件的位置,并尝试运行该示例,就会出现此错误。

E:\java-examples\src\com\howtodoinjava\core\basic> javac MainClass.java
 
E:\java-examples\src\com\howtodoinjava\core\basic> java MainClass
Error: Could not find or load main class MainClass

解决方案

如果我们想在MainClass中执行main()方法,我们必须在java命令中使用完整的类名,包括包名。

编译和执行此类的正确方法是:

E:\java-examples\src> javac com\howtodoinjava\core\basic\MainClass.java
 
E:\java-examples\src> java com.howtodoinjava.core.basic.MainClass

程序输出:

Hello, World!

应用程序已成功运行。这样,通过使用正确的类名和包名,并从包根文件夹执行java命令,我们可以解决这个错误。

在Java编程语言中,经常会遇到上面的错误和异常。但是一些最流行和最常见的错误常常是编程新手所面临的。在这些错误中,Java中找不到或加载不到主类是常见的错误之一。该错误表示java命令未能找到或加载主类。它发生在我们试图运行一个程序时。当错误发生时,JVM在控制台上显示以下错误消息:

Error: Could not find or load main class ClassName  

错误主要是在程序运行时错误地指定类名时产生的。

发生错误的原因

由于JVM未能加载主类或包名称,因此会生成错误。产生相同错误的其他原因如下:

  • 类已在错误的包中声明。
  • 类路径中缺少依赖项。
  • 子目录路径与完全限定名不匹配。
  • 类路径上有错误的目录。
  • 应用程序的类路径指定不正确。
  • 当我们使用类名参数出错时,也会发生这种情况。

错误的解决方案

为了避免或解决错误,我们需要指定绝对包名或类名。

不带包名

main类是定义main()方法的类。让我们创建一个在控制台上生成并显示错误的程序。

DemoClass.java

public class DemoClass  
{   
public static void main(String[] args)    
{           
System.out.print("Enter a string: ");   
//using console to input data from user   
String name = System.console().readLine();   
System.out.println("You have entered: "+name);   
}   
}  

输出:

Error: Could not find or load main class

我们看到上面的程序编译运行成功。让我们生成在上述程序中找不到或无法加载主类的错误。为了生成并显示错误,我们在键入java命令javademoclas时拼错了类名。

Error: Could not find or load main class

当我们在类名的末尾指定.class扩展名时,也会发生这种情况。

java DemoClass.class  

Error: Could not find or load main class

为了避免错误,在使用java命令时,不要在类名的末尾写入.class扩展名。

java DemoClass  

当我们没有将类放置在正确的文件夹中时,也会发生错误。在下图中,我们不在类所在的demo文件夹中。意思是DemoClass.class 文件必须在目录C:\demo中。

Error: Could not find or load main class

带包名

在上面的程序中,让我们创建一个名为com.javatpoint. 这意味着,在编译以下Java程序时,.class文件将在C:\demo\com\javatpoint\DemoClass.class.

Error: Could not find or load main class

DemoClass.java

package com.javatpoint;  
public class DemoClass  
{   
public static void main(String[] args)    
{           
System.out.print("Enter a string: ");   
//reading a string from the user  
String name = System.console().readLine();   
System.out.println("You have entered: "+name);   
}   
}  

输出:

Error: Could not find or load main class

请记住,如果类位于包中,则必须在java命令中使用完整的类名,包括包名。

 

除特别注明外,本站所有文章均为老K的Java博客原创,转载请注明出处来自https://javakk.com/1874.html

关于

发表评论

表情 格式

暂无评论

登录

忘记密码 ?

切换登录

注册