使用模块时如何修补package-info.java文件?

时间:2019-02-15 23:17:37

标签: java javac java-9 jigsaw

我能够使用这些说明来修补系统模块文件。 https://openjdk.java.net/projects/jigsaw/quick-start#xoverride

当尝试使用同一命令修补package-info.java时,如果修补的版本与模块中的版本具有相同的内容,则不会生成package-info.class文件。但这不适用于非程序包信息的Java文件。

javac --patch-module java.base = src -d mypatches / java.base \         src / java.base / java / util / concurrent / package-info.java

在我最初的问题中,我提到了以下错误:

package-info.java:2:错误:软件包存在于另一个模块中:java.base

我仍在尝试创建一个玩具示例来重现此错误。主要区别是出现此错误时我正在使用自定义系统模块(--system)。

1 个答案:

答案 0 :(得分:1)

JEP 261引入了--patch-module应用于类文件,因此它可以也适用于package-info.class。但随后继续

  

每个实例的作用是更改模块系统在指定模块中搜索类型的方式。

由于package-info没有定义类型,因此上述句子暗示--patch-modulepackage-info没有影响。

仍然,我相信给出的确切错误消息是指定行为下的偶然产物,就像package-info.java被编译为与未命名包相关联,尽管它位于补丁程序路径上。