# Integration von JDOM in Eclipse Plug-in Projekt?



## RHunter (10. Nov 2006)

Hallo Leute,

ich habe folgendes Problem: Ich kann die jdom.jar nicht richtig in mein Eclipse Plugin-Projekt importieren. Habe dazu zunächst ein Plugin-Projekt mit einem View (default example) erstellt und die jdom.jar unter "library" "add external jars" (in den projekteinstellungen) eingebunden. Die import statements der Klasse aus der jdom-Bibliothek funktionieren dann und auch die API von jdom ist in Eclipse verfügbar. Nur, wenn ich das Programm ausführe, sind für Eclipse die gerade verwendeten Klassen aus jdom nicht verfügbar. Ich bekomme immer einen "NoClassDefFoundError".

Stack-Trace für NoClassDefFoundError der Klasse SAXBuilder:


```
java.lang.NoClassDefFoundError: org/jdom/input/SAXBuilder
	at jdplugin.View.createPartControl(View.java:71)
	at org.eclipse.ui.internal.ViewReference.createPartHelper(ViewReference.java:332)
	at org.eclipse.ui.internal.ViewReference.createPart(ViewReference.java:197)
	at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:566)
	at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:290)
	at org.eclipse.ui.internal.ViewPane.setVisible(ViewPane.java:525)
	at org.eclipse.ui.internal.presentations.PresentablePart.setVisible(PresentablePart.java:140)
	at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.select(PresentablePartFolder.java:268)
	at org.eclipse.ui.internal.presentations.util.LeftToRightTabOrder.select(LeftToRightTabOrder.java:65)
	at org.eclipse.ui.internal.presentations.util.TabbedStackPresentation.selectPart(TabbedStackPresentation.java:394)
	at org.eclipse.ui.internal.PartStack.refreshPresentationSelection(PartStack.java:1144)
	at org.eclipse.ui.internal.PartStack.setSelection(PartStack.java:1097)
	at org.eclipse.ui.internal.PartStack.showPart(PartStack.java:1311)
	at org.eclipse.ui.internal.PartStack.createControl(PartStack.java:601)
	at org.eclipse.ui.internal.PartStack.createControl(PartStack.java:532)
	at org.eclipse.ui.internal.PartSashContainer.createControl(PartSashContainer.java:562)
	at org.eclipse.ui.internal.PerspectiveHelper.activate(PerspectiveHelper.java:244)
	at org.eclipse.ui.internal.Perspective.onActivate(Perspective.java:815)
	at org.eclipse.ui.internal.WorkbenchPage.onActivate(WorkbenchPage.java:2429)
	at org.eclipse.ui.internal.WorkbenchWindow$6.run(WorkbenchWindow.java:2616)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
	at org.eclipse.ui.internal.WorkbenchWindow.setActivePage(WorkbenchWindow.java:2597)
	at org.eclipse.ui.internal.WorkbenchWindow.busyOpenPage(WorkbenchWindow.java:658)
	at org.eclipse.ui.internal.Workbench.busyOpenWorkbenchWindow(Workbench.java:795)
	at org.eclipse.ui.internal.Workbench.doOpenFirstTimeWindow(Workbench.java:1437)
	at org.eclipse.ui.internal.Workbench.openFirstTimeWindow(Workbench.java:1388)
	at org.eclipse.ui.internal.WorkbenchConfigurer.openFirstTimeWindow(WorkbenchConfigurer.java:190)
	at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:708)
	at org.eclipse.ui.internal.Workbench.init(Workbench.java:1085)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1847)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:419)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at jdplugin.Application.run(Application.java:18)
	at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:78)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336)
	at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
	at org.eclipse.core.launcher.Main.run(Main.java:977)
	at org.eclipse.core.launcher.Main.main(Main.java:952)
```

Wenn ich ein normales Java-Projekt in Eclipse erstelle und nach gleichem Vorgehen die jdom.jar importiere, klappt alles einwandfrei. Woran kann das liegen? 

Bin für jede Hilfe sehr dankbar.


----------



## Wildcard (11. Nov 2006)

Für Plugins läuft das anders. 
Du musst die dependencies in der plugin.xml angeben.


----------



## RHunter (11. Nov 2006)

Wildcard hat gesagt.:
			
		

> Für Plugins läuft das anders.
> Du musst die dependencies in der plugin.xml angeben.



Vielen Dank für den Hinweis. Leider kann ich dort in keiner der beiden Listen nirgends das org.jdom - Package auswählen!

Kannst Du mir bitte vielleicht in einzelnen Schritten erläutern, wie ich das Ding eingebunden bekomme.

DANKE!

PS: Meine Frage genauer: Wie krieg ich den JDOM in die Liste der dependencies, um ihn dort auswählen zu können. Der "import" oder "add external jars" bei den libraries scheint ja nicht zu genügen...


----------



## Wildcard (11. Nov 2006)

plugin.xml öffnen -> Runtime-Tab auswählen -> bei classpath 'add' auswählen


----------



## RHunter (12. Nov 2006)

Jetzt klappts!

Bin jetzt folgendermaßen vorgegangen:

1. JDOM.jar über "add external library" in den project properties hinzugefügt
2. Habe die JDOM.jar in das "src"-Verzeichnis meines Projekts importiert (import-> general / archive file)
3. classpath (runtime in plugin.xml) das "src"-Verzeichnis hinzugefügt

Ist das gesamte Vorgehen denn so in Ordnung? Mir kommt es irgendwie zu umständlich (weil irgendwie "doppelt-gemoppelt") vor...

JEDENFALLS VIELEN DANK FÜR DEINE HILFE!


----------



## Wildcard (12. Nov 2006)

Hat das mit meiner Methode nicht funktioniert?  ???:L 
Deine jetzige Lösung ist nicht so optimal, da du jetzt die Libary in deinem eigenen Projekt hast.


----------



## RHunter (13. Nov 2006)

Wildcard hat gesagt.:
			
		

> Hat das mit meiner Methode nicht funktioniert?  ???:L
> Deine jetzige Lösung ist nicht so optimal, da du jetzt die Libary in deinem eigenen Projekt hast.



Leider nicht! Wenn ich nur den jdom über "add external library" importiere, kann ich es nirgends im buildpath auswählen, so dass der fehler immer noch auftrat...


----------



## Guest (22. Nov 2006)

Bei classpath tauchen die vorher über den Build Path hinzugefügten Jars leider nicht auf und können deshalb nicht hinzugefügt werden- zumindest in 3.3 ist das bei mir der Fall?


----------

