java - 使用 java 1.8 的 Liberty 服务器

标签 java drools websphere-liberty

在 liberty 服务器中部署应用程序时出现以下错误。 看来 drools 与 java 1.8 存在兼容性问题。我无法更改我的 drools/mvel jar 版本,因为它需要对 drools 进行重大更改。在其中一个论坛中,我已阅读使用更新的 ecj 版本 jar 因此我已将 ecj jar 更新到 4.5.1 版本,但即使收到错误。此解决方案适用于 tomcat 和 WAS 服务器,没有任何 java 1.8 迁移问题

Caused by: java.lang.VerifyError: (class: ASMAccessorImpl_7258891721511957152780, method: getKnownEgressType signature: ()Ljava/lang/Class;) Illegal type in constant pool.

任何人都可以告诉我们需要做什么来解决上述错误

最佳答案

通常,当使用使用一种 JDK 编译并使用另一种 JDK 运行的 .class 文件(例如使用 IBM JDK 7 编译并使用 Oracle JDK 8 运行)时,我会发现此问题发生。

要解决VerifyError问题,您可以将-noverify添加到您的JVM_ARGS(通过jvm.options)。

对于更详细的分析,了解以下内容会很有帮助:

  • 错误的完整堆栈跟踪
  • 您运行的 JDK 是什么
  • 您正在使用的 WAS Liberty 版本

关于java - 使用 java 1.8 的 Liberty 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47553052/

相关文章:

Java Math.acos() 返回值

java - 流口水:不止一条规则被触发,我想打印结论(然后是部分),这可能吗?如果不是你有什么建议?

java - 来自不同 ClassLoader 的 Drools KieContainer

websphere-liberty - WebSphere Liberty 配置文件 : Context Root Not Found

java - 将字符串转换为日期对象

java - 如果字符串重复,如何返回字符串的第一个字符?

jakarta-ee - 自由激活@MessageDriven

java - 无法从 WAS Liberty 服务器中部署的 Spring boot 应用程序访问 JNDI Url 上下文

java - 我可以更具体地传递一个二维数组,其中一个维度是一个字符串,另一个维度是 "generic"

java - 直接从存储库加载 Drools/KIE Workbench Artifact