我正在尝试使用最新版本 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