当java(解释器)区分大小写时,为什么Java编译器(javac)不区分大小写?

时间:2014-02-07 16:56:42

标签: java compiler-construction jvm

当我执行Java程序时,我注意到Java编译器对文件名不区分大小写,而Java解释器区分大小写。

Java解释器区分大小写是非常容易理解的,因为类文件的名称是Java代码中定义的类的名称。

Java编译器是否有任何理由不区分大小写?

4 个答案:

答案 0 :(得分:6)

Windows文件系统不区分大小写 您不能(理所当然)在不区分大小写的文件系统上找到区分大小写的文件。

如果您在Linux上使用区分大小写的文件系统运行javac,它将区分大小写。

答案 1 :(得分:3)

它取决于底层文件系统。 Windows的文件系统不区分大小写,因此当java编译器查找“Foo.java”时,操作系统会很高兴地打开'foo.java'。

答案 2 :(得分:3)

据推测,您正在使用保留大小写或不区分大小写的文件系统在Windows或其他操作系统上运行编译器。如果您在使用区分大小写的文件系统的操作系统上运行它,您将得到不同的结果。换句话说,它不是编译器,而是操作系统(或者说是文件系统)。

答案 3 :(得分:3)

Windows仍然是一个面向儿童和人们的操作系统,他们只想上网或进行财务文书工作。但不适合开发人员。

近20年来,MS在以下方面几乎没有做任何事情:

  • 文件系统(他们可以将他们心爱的NTFS保留为默认值,并为专业人士提供另一个,但他们不能)
  • 命令行,它仍然是我们用Windows NT得到的坏垃圾。请注意,NT代​​表“新技术”,但他们甚至没有设法继承已有10年或20年的可用资源。

因此,如果您开发Java,请确保您没有仅在大小写不同的类或包名称。这将不可避免地导致灾难。

帮自己一个忙,给你的HD留一点空间,或者连接一个外置的,并安装双启动LINUX。如果必须,请创建一个虚拟机。一旦安装了您喜爱的IDE,您将永远不会回头。而且你将在此过程中学习一两点。