【发布时间】:2014-09-12 14:36:37
【问题描述】:
我在 Windows 操作系统中,在 eclipse IDE 中工作,我有以下两种情况:
1.我创建了下面的类,这是在 Employee.java 类中(E 是大写的):
public class Employee {
public static void main(String[] args) {
employee emp = new employee();
emp.test();
}
}
//here e is in lowercase
class employee {
public void test() {
System.out.println("I am in test()");
}
}
在这种情况下,我得到了以下异常:
Exception in thread "main" java.lang.NoClassDefFoundError: employee (wrong name: Employee)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
.
.
.
at Employee.main(Employee.java:4) // i.e at emp.test();
2。我创建了下面的类,这是 Employee.java 类:
public class Employee {
public static void main(String[] args) {
}
}
现在,当我尝试在同一个包中创建 employee.java(e 为小写)类时,我在 eclipse 中收到 Type with same name but different case exists.
我的问题是:Java 区分大小写。这是否意味着 JVM(基于 Windows 和 UNIX)区分大小写或编译器区分大小写?以及为什么它在场景 1 中给出了该异常,而 Eclipse 不允许我在场景 2 中的同一位置创建 employee.java 文件。
还记得我在 Windows 操作系统上,它对文件名不区分大小写,所以我知道它不允许 employee.java 和 Employee.java 在同一个位置。 这是否违反了 Java 区分大小写的规定?
【问题讨论】:
-
Java 区分大小写,但您的文件系统并非总是如此。尝试在 linux 中做同样的事情。
-
@greg-449 你是对的。将其标记为 dup