2010-05-19 8 views
9

Ich habe ein Eclipse-Plugin-Projekt, und es hängt von anderen Projekten ab, die ich in meinem Eclipse-Arbeitsbereich habe. Nach dem Hinzufügen der Projektabhängigkeiten unter "Java Build Path" -> "Projekte" Registerkarte, und auch die Auswahl des Projekts in der "Order and Export" bekomme ich eine java.lang.NoClassDefFoundError.Eclipse Plugin-Projekt mit anderen Projektabhängigkeiten

Ich gehe davon aus, dass die anderen Projekte nicht richtig in das Plugin aufgenommen wurden. Kann jemand das beheben?

Danke, James

Antwort

12

Ein Eclipse-Plug-in-Projekt verwaltet anders Abhängigkeiten als ein normales Projekt Java.

Ich nehme an, dass Sie Pakete mit .class-Dateien hinzufügen.

Definieren Sie einen Bibliotheksordner in Ihrem Eclipse-Plug-in-Projekt. Kopieren Sie alle externen Klassen und/oder Jars in den Bibliotheksordner.

Öffnen Sie die Datei MANIFEST.MF im Verzeichnis META-INF. Sie sehen einen formatierten Editor mit 8 Tabs auf der Unterseite.

Klicken Sie auf die Registerkarte Laufzeit. Fügen Sie dem Klassenpfad die externen Klassen und/oder JARs im Bibliotheksordner hinzu. Dadurch werden diese externen Klassen und/oder Jars dem Java-Buildpfad des Projekts hinzugefügt.

Klicken Sie auf die Registerkarte Abhängigkeiten, und fügen Sie die anderen Java-Projekte im Dialog Importierte Pakete hinzu. Sie müssen das Kontrollkästchen "Nicht exportierte Pakete anzeigen" aktivieren. Wenn Ihre anderen Java-Projekte Eclipse-Plugins sind, fügen Sie sie stattdessen unter Erforderliche Plugins hinzu.

+0

Ich habe versucht, Pakete im Abschnitt "Importierte Pakete" hinzuzufügen, aber ich kann die Pakete in meinem anderen Projekt nicht im Dialogfeld "Paketauswahl" finden. Muss ich vorher etwas tun? –

+0

Es tut mir leid, es ist eine Weile her, seit ich ein neues Eclipse Plug-in-Projekt erstellt habe. Ich habe meine Antwort mit weiteren Anweisungen aktualisiert. –

+0

Gilbert: Könnten Sie bitte Ihre Anweisungen ein wenig erläutern? Ich habe die Binärdateien über Projekt -> Java-Buildpfad -> Bibliotheken -> Klassen hinzufügen-Ordner hinzugefügt und dann die Pakete auf der Registerkarte Abhängigkeiten des Plugins importiert. Ich erhalte jetzt die Fehlermeldung "Keine verfügbaren Bundle-Exportpakete 'x'" für die Pakete, die ich in die Manifest.MF-Datei importiert habe. Habe ich etwas verpasst? –

0

Falls Sie das abhängige Projekt nicht in Ihr Plugin-Projekt kopieren können und sicher sind, dass das abhängige Projekt in der Ziel-Eclipse vorhanden ist, in dem das Plugin installiert werden soll, können Sie es verwenden Runtime.exec(), um die Java-Klasse auszuführen, die Sie ausführen möchten, oder ProcessBuilder Klasse, um die Klasse auszuführen.

So:

// To compile 
Process p = Runtime.getRuntime().exec("javac yourclass.java"); 
// To execute 
Process p2 = Runtime.getRuntime().exec("java yourclass"); 

Dies kann im schlimmsten Fall in Betracht gezogen werden. Ich hatte solch eine Erfahrung und dachte daher, dass einige es nützlich finden könnten.

Verwandte Themen