哪些应用程序服务器支持 WAR 中的多版本 JAR(如果有)?
Which app-servers support multi-release JARs in WARs (if any)?
自 Java 9 以来,有多个版本的 JAR (MRJARS) 允许将不同 Java 版本的不同 class 包含在一个 JAR 文件中。当 Wildfly 14 运行ning 在 Java 11 上执行 Java-8 代码时,我感到很惊讶 WAR 中包含的 JAR,尽管 JAR 是一个带有代码的 MRJAR Java 11. 作为常规 Java SE 项目的依赖项包含的 JAR 是 运行ning 不同的代码,具体取决于 运行ning JRE,但是当包含在 WAR,Java-11-code 似乎被忽略了。
这是网络服务器的预期行为,因为 Java EE 8 没有明确要求 Java 9(它引入了 MRJAR)但只需要 Java 8?当 运行 在较新的 Java 版本上时,是否有其他网络服务器能够正确读取 MRJAR?或者 MRJAR 只是 Java SE 的一项功能?
如果我对 Wildfly documentation 的理解正确,那么 WAR 的所有内容都由同一个 class 加载器加载(org.jboss.modules.ModuleClassLoader 根据我的调试器),所以也许classloader 没有正确读取包含的 JAR?
好吧,我的 Bug 报告导致修复,所以现在 Wildfly 确实支持部署的 WAR 中的 MRJARs :)
自 Java 9 以来,有多个版本的 JAR (MRJARS) 允许将不同 Java 版本的不同 class 包含在一个 JAR 文件中。当 Wildfly 14 运行ning 在 Java 11 上执行 Java-8 代码时,我感到很惊讶 WAR 中包含的 JAR,尽管 JAR 是一个带有代码的 MRJAR Java 11. 作为常规 Java SE 项目的依赖项包含的 JAR 是 运行ning 不同的代码,具体取决于 运行ning JRE,但是当包含在 WAR,Java-11-code 似乎被忽略了。
这是网络服务器的预期行为,因为 Java EE 8 没有明确要求 Java 9(它引入了 MRJAR)但只需要 Java 8?当 运行 在较新的 Java 版本上时,是否有其他网络服务器能够正确读取 MRJAR?或者 MRJAR 只是 Java SE 的一项功能?
如果我对 Wildfly documentation 的理解正确,那么 WAR 的所有内容都由同一个 class 加载器加载(org.jboss.modules.ModuleClassLoader 根据我的调试器),所以也许classloader 没有正确读取包含的 JAR?
好吧,我的 Bug 报告导致修复,所以现在 Wildfly 确实支持部署的 WAR 中的 MRJARs :)