首页 > 解决方案 > 如何将 jlink 与自动化库一起使用

问题描述

我遇到了一个无法jlink用于编译的问题,现在我知道出了什么问题:jlink无法编译自动化模块,因为它们的名称不稳定。有解决方法或解决方法吗?以下是我的代码的相关部分:

模块信息.java

module org.example {
    requires MathParser.org.mXparser;

    exports org.example;
}

pom.xml

...
<dependency>
    <groupId>org.mariuszgromada.math</groupId>
    <artifactId>MathParser.org-mXparser</artifactId>
    <version>4.4.2</version>
</dependency>
...

主.java

...
import org.mariuszgromada.math.mxparser.*;
...

使用 编译时jlink,它会给出以下错误消息:

Required filename-based automodules detected. Please don't publish this project to a public artifact repository!

这个问题没有重复,因为它还没有得到回答。建议的问题没有得到修复或解决方法。它仍然回答了技术问题:“检测到所需的基于文件名的自动模块”是什么。警告是什么意思?

标签: javajava-modulejlink

解决方案


不,您的情况没有解决方法。jlink不支持自动模块(即使是稳定的名称也无济于事)。您需要先将您的自动模块转换为显式模块。好消息是您不必重新编译您的库。您可以生成一个模块声明,jdeps --generate-module-info然后将其注入 JAR。这在这个问题中有所描述。


推荐阅读