我正在 WebSphere 6.1 ND 的 MDB 中调用 XML.loadString(...)
。我收到 java.lang.VerifyError
,与 this question 中描述的类似.
堆栈跟踪是:
java.lang.VerifyError: class loading constraint violated (class: scala/collection/mutable/StringBuilder method: toSeq()Lscala/collection/Seq;) at pc: 0
at java.lang.J9VMInternals.verifyImpl(Native Method)
at java.lang.J9VMInternals.verify(J9VMInternals.java:59)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:120)
at scala.xml.parsing.FactoryAdapter.<init>(FactoryAdapter.scala:40)
at scala.xml.parsing.NoBindingFactoryAdapter.<init>(NoBindingFactoryAdapter.scala:18)
at scala.xml.factory.XMLLoader$class.adapter(XMLLoader.scala:24)
at scala.xml.XML$.adapter(XML.scala:40)
at scala.xml.factory.XMLLoader$class.loadXML(XMLLoader.scala:37)
at scala.xml.XML$.loadXML(XML.scala:40)
at scala.xml.factory.XMLLoader$class.loadString(XMLLoader.scala:59)
at scala.xml.XML$.loadString(XML.scala:40)
at my code
如果我也使用ConstructingParser
,就会发生这种情况:
java.lang.VerifyError: class loading constraint violated (class: scala/collection/mutable/StringBuilder method: toSeq()Lscala/collection/Seq;) at pc: 0
at java.lang.J9VMInternals.verifyImpl(Native Method)
at java.lang.J9VMInternals.verify(J9VMInternals.java:59)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:120)
at scala.xml.parsing.MarkupParser$class.$init$(MarkupParser.scala:102)
at scala.xml.parsing.ConstructingParser.<init>(ConstructingParser.scala:47)
at scala.xml.parsing.ConstructingParser$.fromSource(ConstructingParser.scala:22)
我使用的是 Scala v2.9.0.1
如何诊断此类链接问题?
编辑#1
经过一番思考,我意识到问题是在不相关的更改之后发生的。凭直觉,我从 WAS 中完全卸载了该应用程序,然后重新安装了它。问题就消失了。下一次应用程序更新(即覆盖)后,问题再次出现。
又过了几个小时,并且 Scala XML 解析没有发生其他更改,我忘记了卸载/重新安装,而是进行了更新。问题没有再次出现。我无法再复制该问题。
编辑#2
问题再次出现,仅通过卸载/重新安装无法解决。使用 Scala 2.8.1 重试,但问题仍然存在。现在将尝试卸载/关闭服务器/删除临时文件/重新安装/重新启动服务器。祝我好运。
最佳答案
嗯,我不能提供比我在那个答案中给出的更多的建议:-),但就你的情况而言,看起来 scala 类是问题所在。你们哪里有 scala 类(class)?如果您不确定,我建议启用 JVM 详细类加载跟踪,然后您至少会知道 JAR 的位置。
如果 MDB 有问题,那么您必须将应用程序类加载器设置为“父级最后”,因此大概您的应用程序和服务器关联的共享库或其他服务器类路径中都有 scala 类。您要么需要在 JAR 中包含所有相关的 scala 类,要么需要停止使用“parent last”。
关于java - WebSphere 中的 XML.loadString 抛出 java.lang.VerifyError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6935290/