我可以使用这些说明修补系统模块文件。 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: 错误:包存在于另一个模块中:java.base
我仍在尝试创建一个玩具示例来重现此错误。主要区别在于,当我收到此错误时,我正在使用自定义系统模块 (--system)。
最佳答案
JEP 261引入 --patch-module
应用于类文件,因此它也可以应用于 package-info.class。但随后它继续
The effect of each instance is to change how the module system searches for a type in the specified module.
由于package-info没有定义类型,所以上面这句话意味着--patch-module
对package-info
没有影响。
不过,我相信给出的确切错误消息是指定行为下的意外产物,就好像 package-info.java
被编译为与未命名的包关联,尽管位于补丁路径上.
关于java - 使用模块时如何修补 package-info.java 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54718276/