【问题标题】:Deploying multiple release .jar on Oracle WebLogic Server在 Oracle WebLogic Server 上部署多个版本 .jar
【发布时间】: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


【解决方案1】:

我想根据Doc ID 2629550.1补充:

此消息无害,可以忽略。

【讨论】:

  • 欢迎来到 SO,Yannis。尽管此信息可能有用,但您提到的文档在没有帐户的情况下无法访问。如果您可以在此处总结相关信息可能会有所帮助(对于想知道为什么他们可以忽略该消息的人)。
【解决方案2】:

经过深入研究,

BEA-160248 无法解析类文件...

消息是一条红鲱鱼。在解决其他不相关的问题后,尽管日志中出现了这些错误消息,但应用程序确实会根据需要进行部署和工作。

【讨论】:

  • 仍然会很高兴找到一种不在日志中显示这些消息的方法
【解决方案3】:

JEP 238 来自 Java 9,而 WebLogic Server 不能与 Java 9 一起运行。

【讨论】:

  • 多版本 jars 有意向后兼容。
  • 如果没有更多细节,这不是我可以接受的答案。根据我对 JEP 238 的阅读,META-INF/versions/* 目录路径在 Java 8 环境中应该是不可见的。所以,据我所知,它应该起作用。但我认为 WebLogic 只是扫描整个 .jar 而不是只读取应该有类的目录。所以,我认为这不是 Java 版本的问题。我认为这是 WebLogic 行为或(希望)配置问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-17
  • 1970-01-01
  • 2014-09-26
  • 2011-10-19
  • 2019-04-22
  • 1970-01-01
相关资源
最近更新 更多