java.lang.VerifyError:JVMVRFY012堆栈形状不一致;

java.lang.VerifyError:JVMVRFY012堆栈形状不一致;,java,websphere,java-7,ibm-was,Java,Websphere,Java 7,Ibm Was,在WAS8.5.5中部署Maven项目时,我遇到以下错误 我已经在WAS中安装了JDK1.6和1.7 错误500:org.springframework.web.util.NestedServletException:处理程序处理失败;嵌套异常为java.lang.VerifyError:JVMVRFY012堆栈形状不一致;class=com/xyz/simtools/savings/jaxb/SavingsInput\u jaxb\u反序列化\u存根,method=write(ILjava/l

在WAS8.5.5中部署Maven项目时,我遇到以下错误

我已经在WAS中安装了JDK1.6和1.7

错误500:org.springframework.web.util.NestedServletException:处理程序处理失败;嵌套异常为java.lang.VerifyError:JVMVRFY012堆栈形状不一致;class=com/xyz/simtools/savings/jaxb/SavingsInput\u jaxb\u反序列化\u存根,method=write(ILjava/lang/Object;)V,pc=356

我注意到的事情:

  • 在Tomcat中,它运行良好
  • 根据,IBMJDK中对此进行了一些修复,但它仍然不适用于我
  • 我尝试过的事情:

  • 在WAS中尝试了两个JDK版本
  • 请在IBM论坛上阅读
  • 在1.5和1.7中编译了我的项目并尝试部署

  • 我错过什么了吗?还有什么我需要注意的变化吗?

    好吧,我终于想出来了

    分析:出现问题的原因是“jaxb”依赖版本。在里面 我的一些依赖项目“jaxb”依赖项没有包含在ivy.xml中。。。这允许编译器将JDK中存在的jaxb作为依赖项。然而,在其他依赖项项目中,“jaxb”依赖项是在ivy中明确定义的,有一些版本。。。因此,依赖项项目使用不同的jaxb版本编译,最终将通过“VerifyError”wrt编译到jaxb


    解决方案:通过在ivy中为依赖项项目添加“jaxb”版本来解决问题,该项目没有明确的jaxb版本,在主项目中也没有Maven依赖项。

    我也有同样的问题,但在我的情况下,问题和修复是不同的

    (可能)原因:我对问题原因的判断是相同API的两个版本实现之间的冲突。在设计时,在我的工作站上(根据我所在地的既定规则),我的IDE使用IBM JDK实现的SAAJ 1.4来编译我的Web服务类

    IBM\jdk\jre\lib\rt.jar/com\sun\xml\internal\messaging\saaj\soap\SOAPDocumentImpl.class
    
    运行时,使用Tomee(Tomcat)1.7.3,在整个路径中加载相同的类:

    $TOMEE_HOME\lib\saaj-impl-1.3.18.jar/com\sun\xml\internal\messaging\saaj\soap\SOAPDocumentImpl.class
    
    这导致在执行Web服务时出现验证错误:

    • java.lang.VerifyError:JVMVRFY012堆栈形状不一致
    • (葡萄牙语): java.lang.VerifyError:JVMVVRFY012 pilha格式不一致
    解决方法:只需将saaj-impl-1.3.18.jar从Tomee的lib文件夹中取出(移动它)。 由于Tomee/Tomcat使用与我的IDE相同的IBMJDK,我发现冲突可能是由于位于Tomee的lib文件夹中的saaj-impl-1.3.18.jar引起的。离开这里,让Tomee在运行时使用编译时使用的相同实现(IBMJDK)


    请注意,我的开发工作站不是开发/生产(主机)环境,存在此问题。由于工作站配置文件的规则,我发现这是一个可行的解决方法。

    请问您是如何在ivy中添加jaxb的?