NoClassDefFoundError Problem

Krallistic

Mitglied
Ich habe 2 verschiedenliche (Eclipse)RCP Projecte. Nun möchte Project A in B verwenden.

In der Manifest von A habe ich B unter "Required-Bundle" hinzufügt.

Während der Laufzeit b ei der ersten verwendung schmeißt er mir dann:

java.lang.NoClassDefFoundError:XYZ...

Was hab ich vergessen? Am Classpath muss ich ja eigentlich nichts maneul ändern...oder?

mfg
 

Sonecc

Gesperrter Benutzer
Moment...

Ich habe 2 verschiedenliche (Eclipse)RCP Projecte
Sind wirklich beides RCP Anwendungen?

Ich bin mir nicht sicher, ob das so geht, zumindest eins von beidem sollte wohl ein Plugin sein.

Ansonsten, poste mal die komplette Fehlermeldung, so kann man da wenig sagen
 

Krallistic

Mitglied
Ich dachte Plugins für Eclipse basieren immer auf RCP? Wenn nicht dann hab ich mich falsch ausgedrückt dann währen es beide nur plugins...Sorry
Code:
java.lang.NoClassDefFoundError: X/Z/Y
	at org.neontoolkit.plugin.ReductionAction.run(ReductionAction.java:73)
	at org.eclipse.ui.internal.PluginAction.runWithEvent(PluginAction.java:251)
	at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
	at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
	at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4066)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2629)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2593)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2427)
	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:670)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:663)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	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:369)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1407)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1383)
Caused by: java.lang.ClassNotFoundException: X/Y/Z
	at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:506)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
	at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:248)

mfg & Danke
 

Krallistic

Mitglied
Was tut Zeile 73 in ReductionAction denn?
Ist der erste Aufruf einer Funktionalität aus dem anderen Project.

Wenn ich raten müsste: du hast in einem der plugins den Build Path händisch angepasst um eine Bibliothek einzubinden.

Nein habe ich nicht. Ich habe:

-Das andere Project in dem Aktuellen in der manifest unter "Required-Bundle" eingefügt.
-Die RunConfiguration in Eclipse so angepasst das auch beide Plugins geladen werden.

mfg
 

Krallistic

Mitglied
Alles andere, Build-Path ändern, Projekt als Dependency eintragen,... zählt zu 'händisch den Build Path ändern' und das ist verboten.

Hattest Recht das Project war im Build-Path von einer Eclipse Funktion eingetragen(rmt->PDE Tools->Update Classpath). Hab es jetzt daraus entfernt...

Jetzt steht es nur noch im Manifest unter "required-bundel"... Habe jedoch immer noch das gleiche Problem wie am Anfang (NoClassDefFound)

Eventuell vergessen das Plugin im feature bzw. product aufzunehmen
?

mfg & Danke
 

Wildcard

Top Contributor
Verwendest du Reflection, oder steht die Klasse die nicht gefunden wird im Quellcode? Wenn letzteres der Fall ist musst du schon einen Compile Fehler bekommen wenn die Klasse nicht sichtbar ist, nicht erst einen Laufzeitfehler. Wenn das aus irgendeinem Grund nicht der Fall ist, ist der Java Build Path nicht identisch mit dem was dir PDE zur Verfügung stellt und das passiert normalerweise nur wenn du irgendwelche Bibliotheken oder Projekte in den Build Path einträgst.
 

Krallistic

Mitglied
Verwendest du Reflection
Nein
Wenn letzteres der Fall ist musst du schon einen Compile Fehler bekommen
Bekomme erst zur Laufzeit den Error

irgendwelche Bibliotheken oder Projekte in den Build Path einträgst
Hatte noch 2 Bibs eingetragen. Hab aber jetzt dafür gesorgt das diese von PDE eingetragen würden...
Hab jetzt keine eigenen Änderungen am Build Path gemacht sondern alle automatisch generieren lassen.

Jedoch besteht das Problem weiterhin.
 

Wildcard

Top Contributor
Hast du schonmal im plugins Tab der Launch Configuration auf validate geklickt?
Möglich das ein Bundle fehlt, allerdings sollte dein Bundle dann überhaupt nicht starten.
Wenn es daran nicht liegt, poste das log deiner Runtime Application (im runtime workspace /.metadata/.log)
 

Krallistic

Mitglied
Hast du schonmal im plugins Tab der Launch Configuration auf validate geklickt?

Ja , ist alles i.O.

poste das log deiner Runtime Application
Code:
!SESSION 2010-07-24 12:00:11.000 -----------------------------------------------
eclipse.buildId=I20100608-0911
java.version=1.6.0_20
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=de_DE
Framework arguments:  -product org.eclipse.platform.ide
Command-line arguments:  -product org.eclipse.platform.ide -data C:\Users\Krallistic\workspace/../runtime-EclipseApplication -dev file:C:/Users/Krallistic/workspace/.metadata/.plugins/org.eclipse.pde.core/Eclipse Application/dev.properties -os win32 -ws win32 -arch x86

!ENTRY org.eclipse.ui.workbench 2 0 2010-07-24 12:00:16.893
!MESSAGE A handler conflict occurred.  This may disable some commands.
!SUBENTRY 1 org.eclipse.ui.workbench 2 0 2010-07-24 12:00:16.893
!MESSAGE Conflict for 'AUTOGEN:::org.eclipse.ui.cheatsheets.actionSet/org.eclipse.ui.cheatsheets.actions.CheatSheetHelpMenuAction':
HandlerActivation(commandId=AUTOGEN:::org.eclipse.ui.cheatsheets.actionSet/org.eclipse.ui.cheatsheets.actions.CheatSheetHelpMenuAction,
	handler=ActionDelegateHandlerProxy(null,org.eclipse.ui.cheatsheets.CheatSheetExtensionFactory:helpMenuAction),
	expression=AndExpression(ActionSetExpression(org.eclipse.ui.cheatsheets.actionSet,org.eclipse.ui.internal.WorkbenchWindow@690247),WorkbenchWindowExpression(org.eclipse.ui.internal.WorkbenchWindow@690247)),sourcePriority=16640)
HandlerActivation(commandId=AUTOGEN:::org.eclipse.ui.cheatsheets.actionSet/org.eclipse.ui.cheatsheets.actions.CheatSheetHelpMenuAction,
	handler=ActionDelegateHandlerProxy(null,org.eclipse.ui.cheatsheets.CheatSheetExtensionFactory:helpMenuAction),
	expression=AndExpression(ActionSetExpression(org.eclipse.ui.cheatsheets.actionSet,org.eclipse.ui.internal.WorkbenchWindow@690247),WorkbenchWindowExpression(org.eclipse.ui.internal.WorkbenchWindow@690247)),sourcePriority=16640)

!ENTRY org.eclipse.ui 4 0 2010-07-24 12:00:22.979
!MESSAGE Unhandled event loop exception
!STACK 0
java.lang.NoClassDefFoundError: x/y/z
	at org.neontoolkit.plugin.ReductionAction.run(ReductionAction.java:73)
	at org.eclipse.ui.internal.PluginAction.runWithEvent(PluginAction.java:251)
	at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
	at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
	at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4066)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2629)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2593)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2427)
	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:670)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:663)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	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:369)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1407)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1383)
Caused by: java.lang.ClassNotFoundException: x.y.z
	at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:506)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
	at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
	... 30 more

Kommt wenn ich es nur starte und dann sofort die Funktion aufrufe die das 2te Project benötigt.
(Die Handler Warnings kann man ignorieren das ist noch eien andere Baustelle...)

mfg
 

Wildcard

Top Contributor
Dann kann ich dir leider nicht mehr dazu sagen.
Wenn du das Bundle mit X/Y/Z per require-bundle eingebunden hast und dieses Bundle das Package X/Y exportiert, oder wenn du X/Y per import-package importierst, dann stellt OSGi sicher das dein Bundle gar nicht aktiviert werden kann wenn die Abhängigkeit nicht erfüllt werden kann.
Der typischen Fehler sind irgendwelche nested jars oder ein händisch angepasster Buildpath. Wenn du das bei dir definitiv ausschließen kannst, kann ich dir von hier aus nicht weiterhelfen.
 

Krallistic

Mitglied

Das zu importierende Project braucht selber mehere jars könnte das nen problem sein?

X/Y per import-package importierst, dann stellt OSGi sicher das dein Bundle gar nicht aktiviert werden kann wenn die Abhängigkeit nicht erfüllt werden kann

Wird dann auch nicht aktiviert...

Als Notlösung konnte ich das Plugin in ein jar umwandeln und dieses dann einbinden? Gib es vieleicht noch eine andere Lösung...?

mfg
 

Wildcard

Top Contributor
Das zu importierende Project braucht selber mehere jars könnte das nen problem sein?
Absolut. Du darst keine Jars über den Classpath einbinden, das funktioniert zur Laufzeit nicht, darauf will ich doch die ganze Zeit hinaus ;)
Wenn du jars benötigst, mach OSGi Bundles draus, oder trage sie im Manifest als extra classpath entries ein (sie müssen dann in deinem Bundle liegen). Ersteres ist die schönere Variante, letzteres kannst du aber zum Beispiel tun um zu sehen ob das dein Problem löst.
 

Krallistic

Mitglied
Du darst keine Jars über den Classpath einbinden, das funktioniert zur Laufzeit nicht, darauf will ich doch die ganze Zeit hinaus

Ist mir schon klar. Sind auch Bundle_Classpath entrys eingetragen. Hab jetzt bei jeden Project extra nochmal den komplette ClassPath gelöscht und per PDE Tools dann neu erstellen lassen. Immer noch das gleiche..

Könnte es vieleicht daran liegen das das Plugin A mit dem benötigten Klassen doppelt geladen wird? Einmal von meinem Plugin und einmal von einen anderen Plugin welche ich aber auch benötige?

mfg
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Eclipse Plugin NoClassDefFoundError Plattformprogrammierung 4
M Eclipse Plugin Entwicklung - NoClassDefFoundError Plattformprogrammierung 10
S debug funktioniert, laufzeit meldet noclassdeffounderror Plattformprogrammierung 9
N noclassdeffoundError Plattformprogrammierung 41
K Simple Logging Facade 4 -> NoClassDefFoundError Plattformprogrammierung 5
byte [ Eclipse ] NoClassDefFoundError bei neuem Plugin Plattformprogrammierung 4
R NoClassDefFoundError Plattformprogrammierung 14
K Problem bei Einbinden einer DLL in Java-Projekt Plattformprogrammierung 4
Wurstsemmel RCP SWT-Problem: Programm sucht Cocoa-Bibliothek unter Windows Plattformprogrammierung 6
Shams Antbuild - Problem bei OSGi Anfängertutorial Plattformprogrammierung 0
D Problem mit eclipse Plattformprogrammierung 2
J JNA Implimentierungs Problem Plattformprogrammierung 0
Shams Problem bei der Knopflerfischinstallation Plattformprogrammierung 2
J Charset-Problem nach Plugin-Export Plattformprogrammierung 1
TheWhiteShadow RCP Problem mit Plugin Interaktion Plattformprogrammierung 6
D Eclipse_Visual Editor Problem Plattformprogrammierung 2
J Eclipse Plug-In für UML-Diagramme Problem Plattformprogrammierung 4
O Eclipse Plugin - Einfachstes Problem, das es gibt. Plattformprogrammierung 2
dzim OSGi Problem beim Verwenden von Declaratice Services Plattformprogrammierung 18
T netbeans problem? Plattformprogrammierung 4
dzim RCP Problem mit MenuManager Plattformprogrammierung 3
H RCP Problem mit Extension Schema Plattformprogrammierung 10
R JFace Databinding Problem Plattformprogrammierung 5
F Ecilpse plugin und MWE Workflow: classpath Problem Plattformprogrammierung 12
W Wahrscheinlich triviales Problem, aber komm nicht weiter Plattformprogrammierung 7
K SelectionListener / SelectionProvider Problem Plattformprogrammierung 2
M Xpand Anfäger Problem Plattformprogrammierung 3
K Eclipse RCP, EMF, Hibernate Problem Plattformprogrammierung 7
dzim RCP Problem mit Umsetzen des Workspace unter Win Plattformprogrammierung 4
B PreferencesService Problem Plattformprogrammierung 2
K EMF/Teneo EMap Problem Plattformprogrammierung 6
K Problem mit EMF/Teneo, GregorianCalendar, Date, Hibernate Timestamp Plattformprogrammierung 6
L RCP TreeViewer Listener Problem Plattformprogrammierung 12
C target platform problem Plattformprogrammierung 2
F Eclipse: Plug-In mit Ecoding Problem Plattformprogrammierung 7
O Problem mit relativen Pfaden in einem RCP-Plugin Plattformprogrammierung 5
dzim Problem beim neuanlegen von Composites Plattformprogrammierung 4
hdi Problem bei Eclipse Plugin Export Plattformprogrammierung 9
K Bild Problem in exportierter RCP Anwendung Plattformprogrammierung 5
M Problem beim Zugriff auf Klasse aus Fragment in einem anderen Plugin Plattformprogrammierung 3
D Problem mit Synth Painter und OSGi (Equinox) Plattformprogrammierung 8
G plugin.xml Problem Plattformprogrammierung 4
I SWT Popup-Menu Problem (Position) Plattformprogrammierung 4

Ähnliche Java Themen

Neue Themen


Oben