错误:无法找到或加载主类文件名,原因是:java.lang.classnotfoundexception:文件名

6rvt4ljy  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(400)

这个问题在这里已经有答案了

“找不到或加载主类”是什么意思(53个答案)
12天前关门了。
我试图编译我的java代码,但它没有被编译。我在指挥
javac File.java File.class 类文件尚未创建,但我的程序工作正常。这是什么问题

drkbr07n

drkbr07n1#

热释光;博士,很可能 File.java 文件包含一个不同名称的非公共顶级类,因此编译器创建了一个 .class 类的实际名称。重命名类或源文件,以便名称匹配。
超过99.999%的时间, javac File.java 将创建一个 File.class 如果编译没有错误地完成,则返回文件,但情况并非总是如此。
.java 文件可以包含许多类,每个类都被编译成一个 .class 以类命名的文件。例如 File.java ```
class A { // top-level class
class B { // nested class
}
void x() {
class C { // local class
}
new Object() { // anonymous class
};
}
}
class D { // top-level class
}

这将创建以下文件:

A.class
A$B.class
A$1C.class
A$1.class
D.class

如你所见,没有 `File.class` 已创建。
当从文件系统编译时(通常都是这样),编译器会应用以下规则:
最多可以有一个顶级类 `public` .
如果 `.java` 文件包含 `public` 一流的班级 `.java` 文件名必须与该文件名相同 `public` 班级。
一般建议:
一个班级只有一个顶级班 `.java` 文件。
即使顶级班不是 `public` ,以类命名文件。
这两个建议有助于确保编译器和人类都能找到包含类的源文件。

相关问题