java - 哪些应用程序服务器支持 WAR 中的多版本 JAR(如果有)?

标签 java wildfly war java-9 java-ee-8

自 Java 9 起,出现了多版本 JAR ( MRJARS ),允许将不同 Java 版本的不同类包含在一个 JAR 文件中。当运行在 Java 11 上的 Wildfly 14 执行 WAR 中包含的 JAR 中的 Java-8 代码时,我感到很惊讶,尽管该 JAR 是带有 Java 11 代码的 MRJAR。作为常规 Java SE 项目的依赖项包含的 JAR 根据正在运行的 JRE 运行不同的代码,但当包含在 WAR 中时,Java-11 代码似乎会被忽略。

这是 Web 服务器的预期行为吗,因为 Java EE 8 没有明确要求 Java 9(引入了 MRJAR)而只要求 Java 8?在较新的 Java 版本上运行时是否有其他网络服务器能够正确读取 MRJAR?或者 MRJAR 只是 Java SE 的一项功能?

如果我理解 Wildfly documentation正确的是,WAR 的所有内容都由同一个类加载器(根据我的调试器的 org.jboss.modules.ModuleClassLoader)加载,所以也许该类加载器没有正确读取包含的 JAR?

最佳答案

好吧,我的 Bug 报告导致了修复,所以现在 Wildfly 确实支持部署 WAR 中的 MRJAR :)

关于java - 哪些应用程序服务器支持 WAR 中的多版本 JAR(如果有)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53300848/

相关文章:

java - Android - 滚动停止后如何滚动到 ScrollView 的开头或结尾?

java - 如果线程列表中的任何线程发生异常,则中断所有线程

java - 如何解决 "The required mechanism ' BASIC' 在 HttpAuthenticationFactory 的机制 [KEYCLOAK] 中不可用”

deployment - 将大型 *.war 部署到 tomcat 的最佳方法

java - 如何在 apache poi 3.6 中创建新行?

Java 正则表达式从字符串中删除除数字之外的所有内容

curl - 使用curl脚本从wildfly域模式下配置的所有服务器中删除war/ear

java - 在 JBoss 服务器 (WIldfly 10.0) 中使用自己的 WSDL 文件

tomcat - tomcat报错 "FAIL - Deploy Upload Failed, Exception: null"是什么原因?

java - 如果只有一个 servlet 发生变化,就会发生强制上传 war ?