Eclipse Plugin ClassLoader

Diskutiere Eclipse Plugin ClassLoader im IDEs und Tools Bereich.
C

CSHW89

Hallo zusammen,

kennt sich vielleicht jemand mit dem PluginFramework von Eclipse aus? Speziell geht es darum den ClassLoader meines Plugins zu überschreiben, damit ich Klassen aus einer jar-Datei zur Laufzeit laden kann. Versucht habe ich erstmal naiv:
Java:
public class MyActivator extends AbstractUIPlugin {
    public MyActivator() {
        ClassLoader loader;
        try {
            loader = new URLClassLoader(
                    new URL[] {new File("MyJarFile.jar").toURI().toURL()},
                    this.getClass().getClassLoader()
            );
            Thread.currentThread().setContextClassLoader(loader);
            // loader.loadClass("mypackage.MyClassInJar");  // hier funktioniert es
        } catch (MalformedURLException|ClassNotFoundException  e) {
            e.printStackTrace();
        }
    }
  
    public static AbstractUIPlugin getDefault() {
        return new MyActivator();
    }
}
In einer anderen Klasse meines Plugins möchte ich dann eine Klasse der jar-Datei benutzen (bzw. in einem eigenen Editor):
Java:
public class MyEditor extends ExtensionBasedTextEditor implements ITextEditor {
    public MyEditor() {
        mypackage.MyClassInJar object = new mypackage.MyClassInJar()  // hier wird der URLClassLoader nicht verwendet
    }
}
Der URLClassLoader wird aber nicht aufgerufen. Überprüft habe ich es mit einer erweiterten URLClassLoader-Klasse und debugger.

Falls sich jemand fragt, wozu: Ich möchte in jedem Eclipse-Projekt, welches mein Plugin benutzt, einstellen können, welche Version der jar-Datei benutzt wird. D.h. im Projekt wird die jar-Datei ausgewählt und der Editor in meinem Plugin soll dann genau diese jar-Datei benutzen. Die jar-Datei im Runtime-Classpath des Plugin hinzuzufügen, ist also keine Option.

Weiß jemand, wie ich den ClassLoader ändere, oder hat vielleicht eine andere Idee?

Vielen Dank!
 
Thema: 

Eclipse Plugin ClassLoader

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben