gpt4 book ai didi

java - 为什么我不能在一个文件中同时定义 Test 和测试类?

转载 作者:行者123 更新时间:2023-12-02 10:34:51 25 4
gpt4 key购买 nike

我发现当我在同一个文件中定义两个同名但大小写不同的类时,程序会崩溃。

public class Main {

public static void main(String[] args) {
TestClass testClass = new TestClass();
}
}

class TestClass {}
class Testclass {}

这些是输出信息:

Exception in thread "main" java.lang.NoClassDefFoundError: top/example/study/Testclass (wrong name: top/example/study/TestClass) at java.base/java.lang.ClassLoader.defineClass1(Native Method) at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1009) at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174) at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:801) at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:699) at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:622) at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:580) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499) at com.example.study.Main.main(Main.java:6)

我了解到java是区分大小写的,那么为什么会发生这种情况呢?谢谢。

最佳答案

我猜您使用的是 Windows,或者至少是不区分大小写的文件系统。

Java 编译器使用类名生成 .class 文件。 TestClass.java => TestClass.classTestclass.java => Testclass.class。但是,如果您的文件系统不区分大小写,则 TestClass.classTestclass.class 是相同的文件名,并且其中一个会覆盖另一个。

相反,请以不同于大小写的方式使名称不同。

关于java - 为什么我不能在一个文件中同时定义 Test 和测试类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53362795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com