Разработка Java-приложения на основе XML, я недавно столкнулся с интересной проблемой в Ubuntu Linux.
Мое приложение, использующее Java Plugin Framework, кажется неспособным преобразовать dom4j - созданный XML-документ в реализация Batik спецификации SVG.
На консоли я узнаю, что произошла ошибка:
Exception in thread "AWT-EventQueue-0" java.lang.LinkageError: loader constraint violation in interface itable initialization: when resolving method "org.apache.batik.dom.svg.SVGOMDocument.createAttribute(Ljava/lang/String;)Lorg/w3c/dom/Attr;" the class loader (instance of org/java/plugin/standard/StandardPluginClassLoader) of the current class, org/apache/batik/dom/svg/SVGOMDocument, and the class loader (instance of <bootloader>) for interface org/w3c/dom/Document have different Class objects for the type org/w3c/dom/Attr used in the signature at org.apache.batik.dom.svg.SVGDOMImplementation.createDocument(SVGDOMImplementation.java:149) at org.dom4j.io.DOMWriter.createDomDocument(DOMWriter.java:361) at org.dom4j.io.DOMWriter.write(DOMWriter.java:138)
Я полагаю, что проблема вызвана конфликтом между исходным загрузчиком классов от JVM и загрузчиком классов, развернутым в рамках плагина.
Насколько мне известно, невозможно определить загрузчик классов для используемой структуры. Возможно, это можно будет взломать, но я бы предпочел менее агрессивный подход к решению этой проблемы, поскольку (по какой-либо причине) это происходит только в системах Linux.
Кто-нибудь из вас столкнулся с такой проблемой и имеет какое-либо представление о том, как ее исправить или, по крайней мере, решить эту проблему?