如何将模块声明注入JAR?

时间:2017-11-10 11:54:21

标签: java java-9 java-module module-info

假设我有一些库lib.jar,我没有源代码(或者它是用一些不熟悉模块的非Java语言编写的)。 module-info.class没有module-info.class,我不想将其用作自动模块,因此我想将module-info.java注入其中。

我首先使用以下命令生成jdeps --generate-module-info . lib.jar

module lib {
    exports package1;
    exports package2;
}

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

javac

然后我尝试编译它,但package1失败,因为包package2> javac module-info.java module-info.java:4: error: package is empty or does not exist: package1 不存在:

package1

当然,我可以使用虚拟类创建目录package2#input1,但是有更好的方法吗?

2 个答案:

答案 0 :(得分:14)

是的,使用--patch-module选项可以实现这一点。此选项最常用于运行时,但它也可以在编译时使用:

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

答案 1 :(得分:5)

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

然后编译module-info.java,并将输出目录(-d)设置为解压缩内容的目录。

<强> Credits :- Alan