【发布时间】:2019-04-21 02:44:22
【问题描述】:
我发现当我在同一个文件中定义两个同名但大小写不同的类时,程序会崩溃。
public class Main {
public static void main(String[] args) {
TestClass testClass = new TestClass();
}
}
class TestClass {}
class Testclass {}
这些是输出信息:
线程“主”java.lang.NoClassDefFoundError 中的异常: top/example/study/Testclass(名称错误: 顶部/示例/研究/TestClass)在 java.base/java.lang.ClassLoader.defineClass1(本机方法)在 java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1009) 在 java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174) 在 java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:801) 在 java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:699) 在 java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:622) 在 java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:580) 在 java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190) 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499) 在 com.example.study.Main.main(Main.java:6)
我了解到 java 是区分大小写的,那为什么会这样呢?谢谢。
【问题讨论】:
-
我已经尝试过这段代码并且没有出错。请检查您的包裹详情。
-
@GauravRai1512 - 您可能正在使用 *nix,或者至少是区分大小写的文件系统。
-
无论如何最好避免在同一个文件中定义多个顶级类。就像定义仅在大小写上不同的类一样。
标签: java