为什么在java中发生这种情况?

时间:2013-07-11 10:03:58

标签: java windows

我正在使用Windows和Java SE 7.

我创建的课程为TestPerson,将其保存为TestPerson.java

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

但是,Java区分大小写,对吗?

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

3 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:1)

javac正在文件系统上查找名为testperson.java的文件。由于您的(可能)Windows文件系统不区分大小写,因此在询问TestPerson.java时它将返回testperson.java文件。 Javac本身并不知道发生了这种情况 - 它要求提供文件并收到它。

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

答案 2 :(得分:0)

此处Java没有问题。您正在使用命令而不是Java代码,因此这个结果不是由于Java区分大小写。

在Windows中尝试以下操作

cd Desktop

cd desktop

两者的工作方式相似。在你的情况下类似于这个