Java 为什么编译器会说;找不到或无法加载主类“;当main(String[]args)是一个方法时?
以这段代码为例Java 为什么编译器会说;找不到或无法加载主类“;当main(String[]args)是一个方法时?,java,main,Java,Main,以这段代码为例 public class Hello { static void main(String[] args) { System.out.println("Hello World"); } } 在这里,我没有为main方法编写public,而是编译了这个类。当我运行程序时,为什么错误读为“找不到或加载主类Hello.java” 我的问题是,如果main(String[]args)是一个'metho
public class Hello
{
static void main(String[] args)
{
System.out.println("Hello World");
}
}
在这里,我没有为main方法编写public,而是编译了这个类。当我运行程序时,为什么错误读为“找不到或加载主类Hello.java”
我的问题是,如果main(String[]args)是一个'method',那么为什么要说'main class'?关键不是public是否存在。关键是我更改了访问修饰符,这导致main(字符串[]args)对JVM不可见。那么,为什么JVM会说main class和not main()方法
如果这是一个愚蠢的问题,那么我真的很后悔问这个问题
编辑:-
这是错误消息
Error: Could not find or load main class Hello.java
这里有两个问题
main()
必须声明为public static void
java Hello.java
应该是的
java Hello
这里没有像Hello.java
这样的类。该类的名称是Hello
main
必须是公共的。我认为答案是可以找到的——如果您希望main可用作程序的入口点(它的正常用例),main需要声明为公共的。你能看一下吗?别后悔问愚蠢的问题。其他人还能学到什么?(不是说这是一个愚蠢的问题)错误消息中使用“main class”一词的原因可能是JVM试图加载命令行中命名的“main class”,但找不到它。我不知道为什么这件事如此神秘。他的问题不是关于它是否公开。(来自OP的问题)关键不在于公众是否在场。关键是我更改了访问修饰符,这导致main(字符串[]args)对JVM不可见。那么为什么JVM说的是main class而不是main()方法呢?@GBlodgett正是如此,我在(2)中回答了这个问题。请阅读这里写的内容。你自己的回答也涉及(1),因此当我这样做时,你不能理性地抱怨,而且它也无法确定(2)的正确原因。未找到main
方法不会导致此错误消息,即不会导致加载类的完全失败。在你进一步讨论这个问题之前,试一下。我并不是想说你的答案在任何方面都是低劣的。(我将要求OP拒绝接受我的,这样他们就可以接受你的)我只是想说OP知道它应该是公开的。(或者至少根据我在评论中的片段,他们似乎是这样做的)@GBlodgett我们都知道它必须是公共的
。你自己的回答也是如此。我不知道你为什么唠叨这个。在这里列举所有需要修复的错误本身并没有什么错。