# org.eclipse.ui.dialogs.ListSelectionDialog erzeugt ClassNotFoundException zur Laufzeit



## Eclipser (18. Jul 2011)

Hallo liebe Java-Freunde,
vorab erstmal ein dickes Lob: dieses Forum ist eine wahre Fundgrube für den hilflosen Entwickler. Wirklich klasse.

Leider hab ich zu meinem akutellen Problem auch nach einer Woche verzweifeltem Googeln nichts gefunden, das mir weiterhilft. Daher wende ich mich nun verschämt direkt an euch.

Ich entwickle derzeit in eclipse 3.7 eine Anwendung, die SWT und JFace verwendet. Ich möchte dabei unter Anderem einen ListSelectionDialog öffnen. Leider bekomme ich schon beim Initialisieren folgende Stacktrace-Meldung (inkl. Programmabbruch):

Caused by: java.lang.ClassNotFoundException: org.eclipse.core.runtime.IStatus
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	... 6 more

Als ich noch eclipse 3.6 nutzte, kam immer die Meldung, dass org.eclipse.core.runtime.IRegistryChangeListener nicht gefunden werden könne. Ich hab dann nachgesehen und tatsächlich feststellen müssen, dass beide erwähnten Klassen nicht in den Jar enthalten sind. In der eclipse-Hilfe werden sie jedoch gelistet.

Daraufhin hab ich nach downloadbaren Implementierungen gesucht, diese auch gefunden (siehe beispielsweise hier) und eingebunden. Allerdings bekam ich dann immer die SecurityException, dass die "Signer information" der Klassen nicht mit denen der Klassen aus dem org.eclipse.core.runtime-Paket übereinstimmen.

Wisst ihr Rat? So allmählich bin ich mit meiner Phantasie am Ende...
Vielen Dank schonmal,
Eclipser


----------



## Wildcard (18. Jul 2011)

Anders als der Stacktrace vermuten lässt liegt die Klasse auch nicht in org.eclipse.core.runtime sondern in org.eclipse.equinox.common (sie ist vor einiger Zeit verschoben worden und hat aus Kompatibilitätsgründen den Package Namen behalten).
Stell sicher das equinox.common in deiner Launch Config vorhanden ist.
Mich wundert eher das dein Bundle überhaupt gestartet wurde. Du hast nicht etwa händisch am Build Path rumgeschraubt, oder?




> Daraufhin hab ich nach downloadbaren Implementierungen gesucht, diese auch gefunden (siehe beispielsweise hier) und eingebunden. Allerdings bekam ich dann immer die SecurityException, dass die "Signer information" der Klassen nicht mit denen der Klassen aus dem org.eclipse.core.runtime-Paket übereinstimmen.


Das solltest du besser nicht tun.

EDIT: oder handelt es sich gar nicht um ein plugin Projekt?


----------



## Eclipser (19. Jul 2011)

Hi,
es handelt sich um nicht um ein Plugin-Projekt, sondern um ein normales Programm mit JFace-Elementen in der Oberfläche.
Der Hinweis hat funktioniert, jetzt vermisst er wieder die IRegistryChangeListener. Danke 
Aber die findet man scheinbar in der org.eclipse.equinox.Registry. Sagt die Java-Suche. Auf die Idee, die dafür einzusetzen, bin ich leider gerade eben erst gekommen. Jetzt weiß ich auch, wofür die gut ist 

Viele Grüße,
Eclipser


----------



## Wildcard (19. Jul 2011)

Ich verwende dafür einfach den Open Type Dialog (CTRL + Shift + T). In der Fußzeile steht in welchem Bundle die Klasse zu finden ist.
Übrigens, auch für ein non-osgi Projekt macht es im Eclipse Kontext IMO Sinn es trotzdem als Plugin Projekt zu entwickeln, denn dann kümmert sich Eclipse um den Classpath. Du musst deine Abhängigkeiten nur im Manifest eintragen.


----------



## Eclipser (4. Okt 2011)

Hi,
ich hab inzwischen das Projekt komplett zum Plugin umgestrickt und bin ziemlich glücklich damit. Danke für den Tipp


----------

