自Java 9开始,就有多个发布JAR(MRJARS)允许将用于不同Java版本的不同类包含在一个JAR文件中。当运行在Java 11上的Wildfly 14在WAR中包含的JAR中执行Java-8代码时,我感到惊讶,尽管该JAR是具有Java 11代码的MRJAR。该JAR作为常规Java SE项目的依赖项正在运行取决于正在运行的JRE,代码不同,但是当包含在WAR中时,Java-11-代码似乎被忽略了。
这是Web服务器的预期行为,因为Java EE 8不需要显式地要求Java 9(引入了MRJAR),而仅需要Java 8?在较新的Java版本上运行时,是否还有其他Web服务器能够正确读取MRJAR?还是MRJAR只是Java SE的功能?
如果我正确理解Wildfly documentation,则WAR的所有内容都由相同的类加载器(根据我的调试器,是org.jboss.modules.ModuleClassLoader)加载,因此也许类加载器不正确地读取了包含的内容JAR?
答案 0 :(得分:0)
好吧,我的错误报告已修复,因此Wildfly现在在已部署的WAR中确实支持MRJAR :)