Java Batik函数调用的不兼容对象参数
我在尝试将svg文档加载到JSVG面板时看到以下错误Java Batik函数调用的不兼容对象参数,java,batik,Java,Batik,我在尝试将svg文档加载到JSVG面板时看到以下错误 Exception occurred in target VM: (class: org/apache/batik/bridge/BridgeContext, method: dispose signature: ()V) Incompatible object argument for function call java.lang.VerifyError: (class: org/apache/batik/bridge/BridgeCo
Exception occurred in target VM: (class: org/apache/batik/bridge/BridgeContext, method: dispose signature: ()V) Incompatible object argument for function call
java.lang.VerifyError: (class: org/apache/batik/bridge/BridgeContext, method: dispose signature: ()V) Incompatible object argument for function call
at org.apache.batik.swing.svg.JSVGComponent.createBridgeContext(Unknown Source)
at org.apache.batik.swing.svg.JSVGComponent.installSVGDocument(Unknown Source)
at org.apache.batik.swing.JSVGCanvas.installSVGDocument(Unknown Source)
at org.apache.batik.swing.svg.JSVGComponent$2.run(Unknown Source)
at org.apache.batik.swing.svg.JSVGComponent.stopThenRun(Unknown Source)
at org.apache.batik.swing.svg.JSVGComponent.setSVGDocument(Unknown Source)
at org.netbeans.modules.plantumlnb.SVGImagePreviewPanel.renderSVGFile(SVGImagePreviewPanel.java:48)
at org.netbeans.modules.plantumlnb.RenderImageThread$1.run(RenderImageThread.java:56)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:159)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
这是相关代码
canvas.setSVGDocument(createSVGDocument(newstringreader(imageContent))代码>
我不确定我在这里做错了什么。感谢您的帮助 我认为不兼容不在于应用程序和batik之间,而在于batik和它所需的一个库之间,后者要么不存在,要么存在于不同的版本中。典型的候选对象是xml实用程序库,它可能与使用它的其他软件一起进入您的环境,例如xml-api.jar。另一个陷入麻烦的可能是使用一个Java版本,该版本太旧,因为包含的DOM API类会随着版本的变化而变化。从堆栈跟踪判断,我们实际上不需要查看createSVGDocument()
setSVGDocument()
更有可能与此相关。(看起来setSVGDocument
正在调用stopThenRun
,正在调用run
,等等)感谢您的回复。但是你的建议是编辑并删除SO帖子中的调用吗?是的,用setSVGDocument
的代码替换它。查看堆栈跟踪,看起来您肯定正在使用该函数(因此它可能不是createSVGDocument
)(从第6行缩进开始,向上阅读以了解我的意思)查看有关验证错误的问题。我将看到堆栈跟踪中的最后一个方法(JSVGComponent.createBridgeContext)在做什么,以及它调用了什么库。请确保编译和运行的库/jar版本相同。您的回答将引导我找到我正在寻找的内容。似乎Netbeans提供了自己的xerces
版本,这与我所包含的内容相冲突。谢谢你的帮助。