我正在使用 Windows 和 Java SE 7。
我创建的类是TestPerson
,将其保存为TestPerson.java
.
但是当我尝试通过说javac testperson.java
编译成功并TestPerson.class
使用确切的大小写字母创建它来编译它时。
但是,Java 是区分大小写的,对吧?
怎么会这样?如果我们给出错误的案例,它应该显示一个错误。有什么具体原因吗?但是,在运行时它会显示错误。
Java 区分大小写,但您的 Windows 文件系统可能不区分大小写。
除非您有两个具有相同名称的类(不区分大小写),否则这应该不是问题。Java 在技术上允许这样的事情(类 Hello 和类 HELLO),但这只是主动自找麻烦。非 ASCII 类名或非常长的类名也是如此(这同样适用于 Java,但可能不适用于必须存储类文件的文件系统)。
javac
正在寻找在文件系统上调用testperson.java
的文件。由于您的(大概)Windows 文件系统不区分大小写,因此它会TestPerson.java
在请求testperson.java
. Javac 本身并不知道发生了这种情况——它要求一个文件,然后接收它。
在这种情况下,您希望 Java 做什么? 它区分大小写,它以不同的方式处理两个文件名。但是,如果一个不透明的外部系统将两个不同的文件名视为同一事物,则不能真正受到指责。
这里没有问题Java
。您使用的命令不是 java 代码,所以这个结果不是由于 Java 区分大小写。
在 Windows 中尝试以下操作
cd Desktop
和
cd desktop
两者的工作方式相似。在您的情况下与此类似