Como lidar com LinkageErrors em Java?

Desenvolvendo um aplicativo Java fortemente baseado em XML, recentemente encontrei um problema interessante no Ubuntu Linux.

Meu aplicativo, usando oFramework de plug-in Java, parece incapaz de converter umdom4jdocumento XML criado paraBatik's implementação da especificação SVG.

No console, eu aprendo que ocorre um erro:

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)

Eu acho que o problema é causado por um conflito entre o carregador de classe original da JVM e o carregador de classe implementado pela estrutura do plug-in.

Que eu saiba, não é possível especificar um carregador de classe para a estrutura usar. Pode ser possível hacká-lo, mas eu preferiria uma abordagem menos agressiva para resolver esse problema, pois (por qualquer motivo) isso ocorre apenas nos sistemas Linux.

Um de vocês já encontrou esse problema e tem alguma idéia de como corrigi-lo ou, pelo menos, chegar ao cerne do problema?

questionAnswers(6)

yourAnswerToTheQuestion