如何将模块声明注入JAR?

2022-09-02 03:57:25

假设我有一些库,我没有源代码(或者它是用一些非Java语言编写的,这些语言还不知道模块)。 没有,我不想把它用作自动模块,所以我想注入其中。lib.jarlib.jarmodule-info.classmodule-info.class

我首先使用以下命令生成:module-info.java

jdeps --generate-module-info . lib.jar

假设这生成了类似的东西:

module lib {
    exports package1;
    exports package2;
}

然后我尝试编译它,但失败了,因为包和不存在:javacpackage1package2

> javac module-info.java
module-info.java:4: error: package is empty or does not exist: package1

当然,我可以创建目录并在其中包含虚拟类,但是有没有更好的方法?package1package2


答案 1

是的,这是可以通过该选项实现的。此选项最常在运行时使用,但也在编译时工作:--patch-module

javac --patch-module <module name>=<path to jar> module-info.java

答案 2

或者,要编译生成的,您还需要将JAR的内容提取到目录中。module-info.java

然后在输出目录 (-d) 设置为提取内容的目录的情况下编译 。module-info.java

学分 :- 艾伦


推荐