【问题标题】:Error: could not find or load main class in java [duplicate]错误:无法在java中找到或加载主类[重复]
【发布时间】:2018-07-29 10:45:57
【问题描述】:

我正在用 VSCODE 用 java 编写我的第一个程序,我的 java 版本是 10.0.2 当我运行我的代码时它显示一个错误我设置了我的环境变量和路径。

Error: could not find or load main class (my class name) 原因: java.lang.ClassNotFoundException: (我的类名)

这是我的代码

class main {
public static void main ( String [] args)
{
    System.out.println("HELLO EVERYONE");
}
}

是因为最新版本的 java 还是其他原因?

【问题讨论】:

  • 无法重现错误。您的文件是否保存为 main.java?
  • class main {...} 暗示“(我的类名)”是“main”,包含文件是“main.java”。你到底试过什么?
  • 你没有告诉你是如何编译和运行的。这就是问题所在。
  • @MadhanM 不,当我在我的电脑上尝试同样的事情时,即使类名和程序名不同,它也能正常工作.....该程序在我的电脑上以 VSCODE 完美运行,没有错误跨度>
  • 类名 i Java 不能包含括号或空格。发布您使用的实际代码。告诉我们实际文件名是什么。您如何实际编译该类,以及您如何实际尝试执行它。

标签: java visual-studio-code


【解决方案1】:

您确定file nameclass name 相同吗?

  1. HelloWorld.java -> 文件名;
  2. HelloWorld -> 类名;

一个简单的演示是:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello world");
    }
}

在您的情况下,如果您必须使用单词main 作为class name。然后还是可以的。

您有两个选项来实现这一目标:

  1. 确保file nameclass name 相同。
  2. 或只是删除关键字public,如下所示:

    类主{ 公共静态无效主要(字符串[]参数){ System.out.println("你好世界"); } }

还有一点我要说的:

请关注Java naming convention

  1. 类名应该是UpperCamelCase
  2. lowerCamelCase 用于变量、属性、包、方法;

更新

为什么是规则?

有一个answer

任何声明为public的类都应保存在同名的文件中。如果公共类的名称和包含它的文件不同,则会出现编译错误。 未声明为 public 的类可以保存在具有不同名称的文件中。

请注意,生成的类文件是以 java 类命名的,而不是文件名。

为什么要制定规则?

至于设计理论/目的,这里有一个很全面的discussion

但就个人而言,我更喜欢 BlueRaja - Danny Pflughoeft 的这个:

这只是 Java 的制造商 Sun 制定的约定。 目的是组织;原因是每个用 Java 编写代码的人都会有一个一致的文件命名方式。

【讨论】:

  • 我尝试将程序重命名为与它工作的类名相同(我笔记本电脑上的 java 版本是 10.0.2 ),但是当我在 PC 上编码时,我的类名与我的程序名不同,什么时候我运行了程序它工作了(我电脑上的 java 版本是 1.8.0_161)为什么会这样?
猜你喜欢
  • 2023-03-03
  • 2012-11-02
相关资源
最近更新 更多