我可以使用这些说明修补系统模块文件。 https://openjdk.java.net/projects/jigsaw/quick-start#xoverride
尝试使用相同的命令修补package-info.java时,如果修补版本的内容与模块中的版本相同,则不会生成package-info.class文件。但是这种行为不适用于非package-info java文件。
javac --patch-module java.base = src -d mypatches / java.base \ src / java.base / java / util / concurrent / package-info.java
在我原来的问题中,我提到了以下错误:
package-info.java:2:error:包存在于另一个模块中:java.base
我仍在尝试创建一个玩具示例来重现此错误。主要区别在于,当我收到此错误时,我正在使用自定义系统模块(--system)。
JEP 261介绍--patch-module
作为应用于类文件,因此它也可以应用于package-info.class。但后来它继续下去
每个实例的作用是更改模块系统在指定模块中搜索类型的方式。
由于package-info没有定义类型,上面的句子暗示--patch-module
对package-info
没有影响。
尽管如此,我仍然认为给出的确切错误消息是指定行为下的偶然伪像,就好像package-info.java
被编译为与未命名的包相关联,尽管它位于补丁路径上。