遗留代码中的 JarHell 在 Maven 中使用 Java 9 模块

问题描述 投票:0回答:0

我正在尝试使用最新版本 3.0.4 创建一个 spring boot 应用程序。 我需要使用一个 REST API,为此我发现了一个重客户端,它依赖于与 spring 相同的依赖关系,但使用的是旧版本 (com.jaspersoft:jrs-rest-java-client:8.1.0)。

这导致了我试图用 Java 9 模块修复的 JarHell。因此,我将我的应用程序分成两个模块,第一个模块是

jrs-rest-java-client
上的 API,第二个模块是完整的 spring-boot 应用程序。

因为

jrs-rest-java-client
不是“模块就绪”,我需要将其声明为自动模块。 然而,我无法在其上运行任何基本应用程序(即使没有 spring),因为它一直抱怨
jrs-rest-java-client
jar 堆栈深处的某些代码正在请求访问其他模块。如果我禁用 java 9 模块,相同的代码运行没有任何问题。

自动模块不意味着

transitive
吗?

如何处理遗留代码?我们应该明确要求整个 jar 堆栈吗?

错误示例:

Error occurred during initialization of boot layer
java.lang.module.FindException: Module com.sun.xml.txw2 not found, required by com.sun.xml.bind
java maven java-module
© www.soinside.com 2019 - 2024. All rights reserved.