-5

我正在使用 Windows 和 Java SE 7。

我创建的类是TestPerson,将其保存为TestPerson.java.

但是当我尝试通过说javac testperson.java编译成功并TestPerson.class使用确切的大小写字母创建它来编译它时。

但是,Java 是区分大小写的,对吧?

怎么会这样?如果我们给出错误的案例,它应该显示一个错误。有什么具体原因吗?但是,在运行时它会显示错误。

4

3 回答 3

9

Java 区分大小写,但您的 Windows 文件系统可能不区分大小写。

除非您有两个具有相同名称的类(不区分大小写),否则这应该不是问题。Java 在技术上允许这样的事情(类 Hello 和类 HELLO),但这只是主动自找麻烦。非 ASCII 类名或非常长的类名也是如此(这同样适用于 Java,但可能不适用于必须存储类文件的文件系统)。

于 2013-07-11T10:06:27.393 回答
1

javac正在寻找在文件系统上调用testperson.java的文件。由于您的(大概)Windows 文件系统不区分大小写,因此它会TestPerson.java在请求testperson.java. Javac 本身并不知道发生了这种情况——它要求一个文件,然后接收它。

在这种情况下,您希望 Java 做什么? 区分大小写,它以不同的方式处理两个文件名。但是,如果一个不透明的外部系统将两个不同的文件名视为同一事物,则不能真正受到指责。

于 2013-07-11T10:10:26.977 回答
0

这里没有问题Java。您使用的命令不是 java 代码,所以这个结果不是由于 Java 区分大小写。

在 Windows 中尝试以下操作

cd Desktop

cd desktop

两者的工作方式相似。在您的情况下与此类似

于 2013-07-11T10:12:25.373 回答