假设我有一些库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
,但是有更好的方法吗?
答案 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 强>