如何禁用javac文件名检查?

Ben*_*nno 2 java javac

如果在文件名错误的文件中定义了公共类,javac则会抛出错误:

square_supplies.java:5: error: class Answer is public, should be declared in a file named Answer.java
Run Code Online (Sandbox Code Playgroud)

是否有一个标志可以关闭此行为?如果它不可能javac,是否有另一个java编译器可以关闭它?

MTi*_*ted 5

不,这是java语言的一部分.如果公共类Answer不在Answer.java中,那么javac编译器无法知道Answer类的位置.在编译依赖于Answer的类时,它需要这些信息.

  • 我还认为这是语言规范的一部分.但是JLS根本不涉及编译器. (2认同)
  • 谢谢,我错过了这一部分:"*当且仅当包存储在文件系统(第7.2节)中时,如果在类型中找不到类型,主机系统可以选择强制执行编译时错误的限制.文件名称由类型名称加上扩展名*组成的名称 (2认同)
  • @Benno不是我所知道的,这是一个广泛执行的惯例,有充分的理由.在JLS中使其成为可选项可能是为了允许非常规编译方案的纬度. (2认同)