How to resolve java.lang.VerifyError: JVMVRFY012 stack shape inconsistent; class=com/sun/xml/messaging/saaj/soap/SOAPDocumentImpl
How to resolve java.lang.VerifyError: JVMVRFY012 stack shape inconsistent; class=com/sun/xml/messaging/saaj/soap/SOAPDocumentImpl
从 SOAP 客户端调用基于 SOAP 的 Web 服务时出现以下错误。此 WebService 部署在带有 IBM JDK 7.0 的 Websphere 8.5.0 中。但是,当我与 IBM JDK 6.0.Any 在 WAS 中部署同一个 ear 时,我能够成功地调用同一个 WebService 并获得响应,我们将非常感谢您提供有关如何解决此问题的意见。
java.lang.VerifyError: JVMVRFY012 stack shape inconsistent;
class=com/sun/xml/messaging/saaj/soap/SOAPDocumentImpl,
method=createDocumentFragment()Lorg/w3c/dom/DocumentFragment;, pc=5 at
java.lang.J9VMInternals.verifyImpl(Native Method) at
java.lang.J9VMInternals.verify(J9VMInternals.java:94) at
java.lang.J9VMInternals.initialize(J9VMInternals.java:169) at
com.sun.xml.messaging.saaj.soap.SOAPPartImpl.(SOAPPartImpl.java:106)
at
com.sun.xml.messaging.saaj.soap.ver1_2.SOAPPart1_2Impl.(SOAPPart1_2Impl.java:69)
at
com.sun.xml.messaging.saaj.soap.ver1_2.Message1_2Impl.getSOAPPart(Message1_2Impl.java:89)
at
com.sun.xml.messaging.saaj.soap.MessageImpl.initCharsetProperty(MessageImpl.java:1491)
at
com.sun.xml.messaging.saaj.soap.MessageImpl.init(MessageImpl.java:552)
... 47 more
"Stack shape inconsistent" 通常意味着用作参数的 class 在编译调用者和编译被调用者之间发生了变化。简单的解决方法是重新编译双方,使他们使用 class 的相同定义。
(大多数情况下,我只是重新编译我的整个项目,而不是试图找出不同步的地方。)
问题是由于 WAS 提供的库与 WebApp 之间存在冲突 libraries.Finally 我可以通过进行以下更改来解决此问题。现在我可以使用 IBM Java 6 或 7.
在 WAS 8.5.0、8.5.5 上部署相同的应用程序
将 WebModule 级别 class 加载器 属性 设置为 Class loaded with local class loader first (parent last)
。
这可以通过使用 WebSphere 管理控制台
来实现
Applications->All Applications->SelectApplication Name->Manage Modules->select一个模块->classloader order
从我的项目 pom
中删除了以下依赖项
wsdl4j、axis-saaj、axis-jaxrpc、org.apache.axis、xml-apis、commons-discovery、jaxb-core
将以下依赖项添加到我的项目 pom
xalan、xercesImpl、jaxb-apis、jaxb-impl
从 SOAP 客户端调用基于 SOAP 的 Web 服务时出现以下错误。此 WebService 部署在带有 IBM JDK 7.0 的 Websphere 8.5.0 中。但是,当我与 IBM JDK 6.0.Any 在 WAS 中部署同一个 ear 时,我能够成功地调用同一个 WebService 并获得响应,我们将非常感谢您提供有关如何解决此问题的意见。
java.lang.VerifyError: JVMVRFY012 stack shape inconsistent; class=com/sun/xml/messaging/saaj/soap/SOAPDocumentImpl, method=createDocumentFragment()Lorg/w3c/dom/DocumentFragment;, pc=5 at java.lang.J9VMInternals.verifyImpl(Native Method) at java.lang.J9VMInternals.verify(J9VMInternals.java:94) at java.lang.J9VMInternals.initialize(J9VMInternals.java:169) at com.sun.xml.messaging.saaj.soap.SOAPPartImpl.(SOAPPartImpl.java:106) at com.sun.xml.messaging.saaj.soap.ver1_2.SOAPPart1_2Impl.(SOAPPart1_2Impl.java:69) at com.sun.xml.messaging.saaj.soap.ver1_2.Message1_2Impl.getSOAPPart(Message1_2Impl.java:89) at com.sun.xml.messaging.saaj.soap.MessageImpl.initCharsetProperty(MessageImpl.java:1491) at com.sun.xml.messaging.saaj.soap.MessageImpl.init(MessageImpl.java:552) ... 47 more
"Stack shape inconsistent" 通常意味着用作参数的 class 在编译调用者和编译被调用者之间发生了变化。简单的解决方法是重新编译双方,使他们使用 class 的相同定义。
(大多数情况下,我只是重新编译我的整个项目,而不是试图找出不同步的地方。)
问题是由于 WAS 提供的库与 WebApp 之间存在冲突 libraries.Finally 我可以通过进行以下更改来解决此问题。现在我可以使用 IBM Java 6 或 7.
在 WAS 8.5.0、8.5.5 上部署相同的应用程序将 WebModule 级别 class 加载器 属性 设置为
来实现Class loaded with local class loader first (parent last)
。 这可以通过使用 WebSphere 管理控制台Applications->All Applications->SelectApplication Name->Manage Modules->select一个模块->classloader order
从我的项目 pom
中删除了以下依赖项wsdl4j、axis-saaj、axis-jaxrpc、org.apache.axis、xml-apis、commons-discovery、jaxb-core
将以下依赖项添加到我的项目 pom
xalan、xercesImpl、jaxb-apis、jaxb-impl