【发布时间】:2020-01-12 11:55:46
【问题描述】:
我们正在尝试将 Web 服务(.war 文件)部署到 Oracle WebLogic 12.2.1.0.0 服务器上。
.war 包含一些第三方 .jar,例如 log4j-api-2.12.0.jar,它们是多个发布 .jar(根据 JEP 238,在 MANIFEST.MF 中有 Multi-Release: true)。
因此,它在META-INF/versions/9 目录中包含一些Java 9 编译的类。 WebLogic 12.2 仅使用 Java 8(通过 WebLogic 管理控制台确认版本为 Java 1.8.0_92)。
据我了解,Java 8 服务器应该看不到/忽略 META-INF/versions 目录下的任何类,但这似乎没有发生。看起来好像 Oracle WLS 只是扫描整个 .war。
因此,当我们尝试部署 .war 时,我们会收到如下错误:
BEA-160248 无法解析类文件:...(然后是
META-INF/versions/9目录的长路径名)
我们需要做一些特别的事情来完成这项工作吗?我会接受以下任何内容:
- 以某种方式配置 WLS 以忽略
META-INF/versions/9类 - 配置 Maven 以某种方式构建 .war,而无需第三方 .jar 中存在的
META-INF/versions/9类。
我对每次构建时手动从 .war 中删除任何内容的答案不感兴趣。此外,我不确定此时我是否可以降级到早期版本的第 3 方 .jars。 Log4j2,可能可以……但还有其他的。
谢谢!
【问题讨论】:
-
哪个版本的 Java 用于构建战争?
标签: java maven weblogic weblogic12c multi-release-jar