【问题标题】:XML.loadString in WebSphere throws java.lang.VerifyErrorWebSphere 中的 XML.loadString 抛出 java.lang.VerifyError
【发布时间】:2011-08-04 01:51:28
【问题描述】:

我在 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 2.8.1。如果它在那里工作,请在JIRA 上打开一个问题。
  • 2.8.1 仍然存在问题。

标签: java scala websphere classloader linkage


【解决方案1】:

好吧,我不能给出比我在那个答案中给出的更多建议:-),但在你的情况下,看起来 scala 类是问题所在。你在哪里有 scala 类?如果您不确定,我建议启用 JVM 详细类加载跟踪,然后您至少会知道 JAR 的位置。

如果 MDB 有问题,那么您必须将您的应用程序类加载器设置为“最后一个父级”,因此推测您在应用程序和与服务器相关的共享库或其他服务器类路径中都有 scala 类.你要么需要在你的 JAR 中包含所有相关的 scala 类,要么你需要停止使用“parent last”。

【讨论】:

    【解决方案2】:

    这是 WebSphere 6 ND 中的一个错误。通过应用 fixpack 37 修复。就像你一样。

    编辑:事实上,WAS 6 的 IBM JRE 中的一个错误,在使用 scalac 时会重现该错误这一事实证明了这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-17
      相关资源
      最近更新 更多