【问题标题】:Liberty server with java 1.8带有 java 1.8 的 Liberty 服务器
【发布时间】:2017-11-30 00:27:18
【问题描述】:

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

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

谁能告诉我们解决上述错误需要做些什么

【问题讨论】:

  • 如果你使用java 1.7会出现问题吗?更换 ecj jar 后,您是否使用 --clean 启动 Liberty 以清除类缓存?在 jvm 中打开详细类加载可能会指向有问题的类,请参阅 IBM KnowledgeCenter 主题中有关 jvm.options 文件的部分ibm.com/support/knowledgecenter/SSEQTP_liberty/…

标签: java drools websphere-liberty


【解决方案1】:

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

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

了解更详细的分析会有所帮助:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-08
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    相关资源
    最近更新 更多