[SOLVED] Class Loader problem with batik: How to search dependencies ? [message #931810] |
Wed, 03 October 2012 14:49 |
Eclipse User |
|
|
|
Hello,
I have been trying to integrate an SVG export in my Eclipse RCP software, but I have a problem when running the code:
!ENTRY org.eclipse.ui 4 0 2012-10-03 16:39:44.835
!MESSAGE Unhandled event loop exception
!STACK 0
java.lang.LinkageError: loader constraint violation: loader (instance of org/eclipse/osgi/internal/baseadaptor/DefaultClassLoader) previously initiated loading for a different type with name "org/w3c/dom/DOMImplementation"
at bob.ImageExportUtils.exportAWTasSVG(ImageExportUtils.java:51)
at bob.HeatMapView.widgetSelected(HeatMapView.java:692)
...
For running my software and have no problem with external jar files, I inserted all of them in a plugin bob.lib, created using the wizard "Plugin from jar files". This plugin is the only dependencies declared for my bob plugin (excepted of course the different org.eclipse.* plugin always needed)
I guess my problem come from the fact that bob.lib plugin contains different type of jar, and maybe two of them have both implemented org.w3c.dom.DOMImplementation, so a conflict is reached has the ClassLoader try to re-load an existing class.
I admit that the concept of ClassLoader is for me totally virtual (I understand the concept but never go in the deep code), so if you have a hint on my problem and know how to solve it using a specific Eclipse tool, like searchning in a plugin who is using a specific class, I would be pleased to hear it !
Thank you.
[Updated on: Tue, 16 October 2012 15:06] by Moderator Report message to a moderator
|
|
|
|
|
|
|
Re: Class Loader problem with batik: How to search dependencies ? [message #946850 is a reply to message #933724] |
Tue, 16 October 2012 15:06 |
Eclipse User |
|
|
|
For those who might be interested, I solved my problem by using another class.
Apprently it was not org.w3c.dom posing problem but org.apache.batik.dom which is loaded when using GenericDOMImplementation in the code:
DOMImplementation domImpl = GenericDOMImplementation.getDOMImplementation();
Document document = domImpl.createDocument(null, "svg", null);
Both package might use different ClassLoader
In fact, packages needed are now in the TargetPlatform apparently by default (Eclipse 4.2) :
org.apache.batik.dom
org.apache.batik.svggen
org.apache.batik.ext.awt
Using these, instead of Batik exported packages solves the problem.
So Batik has a special way of managing ClassLoader ? Is it even possible ?
Anyway it is working, I can do nice figures and that's the principal for me
|
|
|
Powered by
FUDForum. Page generated in 0.04240 seconds