我们的生产系统(Java7 运行时)中的 XSLT 转换时常会失败,并出现下面提供的 NullPointerException。据我从 Saxon9 源码中了解到,LRUCache 类是 AnyURIValue 类中的一个静态类成员。我对此进行了一些研究,并读到这可能是由于底层 LinkedHashMap 上的并发和非同步调用,这可以解释问题似乎出现在我们的随机时间点。
The [java.lang.NullPointerException] occurred during XSLT transformation: java.lang.NullPointerException
at com.tibco.plugin.xml.XMLTransformActivity.eval(Unknown Source)
at com.tibco.pe.plugin.Activity.eval(Unknown Source)
at com.tibco.pe.core.TaskImpl.eval(Unknown Source)
at com.tibco.pe.core.Job.a(Unknown Source)
at com.tibco.pe.core.Job.k(Unknown Source)
at com.tibco.pe.core.JobDispatcher$JobCourier.a(Unknown Source)
at com.tibco.pe.core.JobDispatcher$JobCourier.run(Unknown Source)
caused by: java.lang.NullPointerException at java.util.LinkedHashMap$Entry.remove(Unknown Source)
at java.util.LinkedHashMap$Entry.recordRemoval(Unknown Source)
at java.util.HashMap.removeEntryForKey(Unknown Source)
at java.util.LinkedHashMap.addEntry(Unknown Source)
at java.util.HashMap.put(Unknown Source)
at net.sf.saxon.sort.LRUCache.put(LRUCache.java:47)
at net.sf.saxon.value.AnyURIValue.isValidURI(AnyURIValue.java:103)
at net.sf.saxon.instruct.Namespace.checkPrefixAndUri(Namespace.java:184)
at net.sf.saxon.instruct.Namespace.processLeavingTail(Namespace.java:144)
at net.sf.saxon.instruct.Block.processLeavingTail(Block.java:399)
at net.sf.saxon.instruct.Instruction.process(Instruction.java:94)
at net.sf.saxon.instruct.ElementCreator.processLeavingTail(ElementCreator.java:298)
at net.sf.saxon.instruct.Template.applyLeavingTail(Template.java:175)
at net.sf.saxon.instruct.ApplyTemplates.applyTemplates(ApplyTemplates.java:343)
at net.sf.saxon.instruct.ApplyTemplates.defaultAction(ApplyTemplates.java:376)
at net.sf.saxon.instruct.ApplyTemplates.applyTemplates(ApplyTemplates.java:331)
at net.sf.saxon.Controller.transformDocument(Controller.java:1735)
at net.sf.saxon.Controller.transform(Controller.java:1559)
at com.tibco.plugin.xml.XMLTransformActivity.new(Unknown Source)
at com.tibco.plugin.xml.XMLTransformActivity.eval(Unknown Source)
at com.tibco.pe.plugin.Activity.eval(Unknown Source)
at com.tibco.pe.core.TaskImpl.eval(Unknown Source)
at com.tibco.pe.core.Job.a(Unknown Source)
at com.tibco.pe.core.Job.k(Unknown Source)
at com.tibco.pe.core.JobDispatcher$JobCourier.a(Unknown Source)
at com.tibco.pe.core.JobDispatcher$JobCourier.run(Unknown Source)
- 有人在 Saxon9 上遇到过同样的问题吗?
- 尝试在 Eclipse 中重现该问题的最佳方法是什么?