# Eclipse RCP + externe JARs + ClassNotFoundException



## sebbie (2. Feb 2010)

Guten Abend zusammen,

ich entwickle derzeit eine Eclipse RCP Projekt und benötige dafür die Semantic Web API Jena. 
Um auf die Funktion von Jena zuzugreifen bin ich wie folgt vorgegangen:


Jena heruntergeladen und entpackt
In meinem Projekt einen Ordner names lib angelegt
den Inhalt des lib Ordners aus dem Jena Paket über Eclipse in meinen lib Ordner importiert
In den Eigenschaften des Projektes unter "Java Build Path" mit Hilfe von "Add Jars" die JAR Dateien hinzugefügt
Nachdem ich eine ClassNotFound Exception erhalten habe, habe ich auch noch den kompletten lib Ordner über "Add Class Folder" hinzugefügt

Nun zum Problem: 
Wenn ich in meinem Projekt auf Jena zugreifen möchte funktioniert alles einwandfrei. Ich kann alles über import einbinden und es werden keine Fehler angezeigt.
Wenn ich mein RCP Programm starte, öffnet sich die GUI des Programms und ich erhalte die Fehlermeldung 


```
Could not create the view: com/hp/hpl/jena/rdf/model/Resource
```

wenn ich mir die Details der Fehlermeldung ansehe, entdecke ich eine ClassNotFoundException:


```
java.lang.ClassNotFoundException: com.hp.hpl.jena.rdf.model.Resource
	at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:489)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:405)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:393)
	at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:105)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at ontology.Test.<init>(Test.java:7)
	at ontology.View.createPartControl(View.java:74)
	at org.eclipse.ui.internal.ViewReference.createPartHelper(ViewReference.java:367)
	at org.eclipse.ui.internal.ViewReference.createPart(ViewReference.java:226)
	at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595)
	at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:313)
	at org.eclipse.ui.internal.ViewPane.setVisible(ViewPane.java:529)
	at org.eclipse.ui.internal.presentations.PresentablePart.setVisible(PresentablePart.java:180)
	at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.select(PresentablePartFolder.java:270)
	at org.eclipse.ui.internal.presentations.util.LeftToRightTabOrder.select(LeftToRightTabOrder.java:65)
	at org.eclipse.ui.internal.presentations.util.TabbedStackPresentation.selectPart(TabbedStackPresentation.java:473)
	at org.eclipse.ui.internal.PartStack.refreshPresentationSelection(PartStack.java:1256)
	at org.eclipse.ui.internal.PartStack.setSelection(PartStack.java:1209)
	at org.eclipse.ui.internal.PartStack.showPart(PartStack.java:1608)
	at org.eclipse.ui.internal.PartStack.createControl(PartStack.java:649)
	at org.eclipse.ui.internal.PartStack.createControl(PartStack.java:576)
	at org.eclipse.ui.internal.PartSashContainer.createControl(PartSashContainer.java:568)
	at org.eclipse.ui.internal.PerspectiveHelper.activate(PerspectiveHelper.java:272)
	at org.eclipse.ui.internal.Perspective.onActivate(Perspective.java:981)
	at org.eclipse.ui.internal.WorkbenchPage.onActivate(WorkbenchPage.java:2626)
	at org.eclipse.ui.internal.WorkbenchWindow$27.run(WorkbenchWindow.java:2964)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.ui.internal.WorkbenchWindow.setActivePage(WorkbenchWindow.java:2945)
	at org.eclipse.ui.internal.WorkbenchWindow.busyOpenPage(WorkbenchWindow.java:760)
	at org.eclipse.ui.internal.Workbench$21.runWithException(Workbench.java:1045)
	at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3855)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3476)
	at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:803)
	at org.eclipse.ui.internal.Workbench$28.runWithException(Workbench.java:1384)
	at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3855)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3476)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2316)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at ontology.Application.start(Application.java:20)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	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.equinox.launcher.Main.invokeFramework(Main.java:559)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1311)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1287)
```

Hat jemand von euch eine Idee woran ich scheitere?

Besten Gruß
sebbie


----------



## Wildcard (2. Feb 2010)

Wenn du ein OSGi/RCP Projekt baust, dann lass den Java Build Path in Ruhe, der geht dich nichts an!
Öffne das Manifest im Manifest Editor und geh zu Runtime -> Extra Classpath Entries. Dort kannst du deine Jar eintragen


----------



## sebbie (2. Feb 2010)

Vielen Dank! Daran hatte ich gar nicht gedacht.


----------



## SchemaMatching (12. Aug 2010)

Hallo,

Ich habe genau das Problemm, 
Aber wenn ich das Manifest im Manifest Editor öffene  ---

in Runtime gibt es keine punkt  "Extra Classpath Entries" 

Da steht nur 3 Auswahl,

Exported packeges
Packege Visibility (Eclipse 3.1 or later)  // bei mir nicht aktiviert
Class path

Wenn ich bei  Class path die jar dateien hinzufüge funktioniert auch nicht,
bei Exported packeges kann ich nicht ein jar datei einfügen,

Dort kannst du deine Jar eintragen 

Kann jemand bitte Helfen,
Vielen Dank
Danke


----------



## lam_tr (18. Aug 2010)

Hi SchemaMatching,

du muss die Product-File öffnen die zur generierung von RCP nötig ist, dort kannst du öffnen.

@all
ich hab ein anderes Problem. Ich hab ein RCP mit mehreren Plugin (eigene Plugins) und jedes mal wenn ich meine neuen Plugins in die Depencies hinzufüge erkennt mein Java Code den Plugin nicht, d.h. wenn ich die neuerstellte Editor-Plugin aufrufen möchte existiert es nicht. Woran liegt es?

Gruss Lam


----------

