# Veränderte Abhängigkeiten beim Umstieg von 3.5.2 auf 3.6.1



## dzim (7. Okt 2010)

Hallo zusammen,

Ich hab bis vor kurzen noch mit Eclipse 3.5.2 gearbeitet und jetzt den Umstieg auf 3.6.1 gewagt...
Bisher bereue ich es!

Ich habe eine Applikation die bisher beinahe vollständig auf meinen Wünschen beruhte, lediglich die Preferences beinhalteten ein paar Kleinigkeiten mehr, als mir lieb war (speziell unter General).
Nun habe ich die Anwendung mit dem selben Produkt im neuen Workspace starten wollen, aber es ging nicht, weil einige Abhängigkeiten nicht aufgelöst werden konnten. Kurzerhand habe ich "add required plugins" genutzt, einige neue kamen hinzu und der Start lief durch.
Doch jetzt habe ich auf einmal noch org.eclipse.team.cor und .ui, sowie einge andere drin, die mir nicht nur die Team Synchronizing Perspective beschert haben sondern auch die "Next/Previous Annotation"-Buttons, sowie den "Last Edit Location"-Button und ich habe noch keine Möglichkeit gefunden, sie wieder los zu werden.

Leider bin ich da mit meinem Latein am Ende.

Und etwas anderes komisches funktioniert jetzt auch nicht mehr: Eine ältere und zum Glück nicht mehr wirklich verwendete Anwendung startet zwar noch, kann aber auf einmal Klassen aus einem anderen eigenen Plugin nicht mehr laden (NoClassDefFound-Error!) - und das obwohl in dem Fraglichen Plugin (was übrigens nur per re-export einen anderen Plugins angeboten wird) das Package mit der fraglichen Klasse ordentlich exportiert wurde...

Ich weiß, das ist alles recht vage, aber vielleicht hat der eine oder andere einfach ein paar Tipps in welche Richtung ich weiter nachforschen sollte - ansonsten, wenn ihr nach mehr Informationen verlangt, kann ich sie euch sicher auch geben...

Vielen Dank und Grüße,
Daniel


----------



## diel2001 (7. Okt 2010)

Poste mal den genauen Stacktrace .
Vielleicht kann ich dir ja helfen


----------



## dzim (7. Okt 2010)

Das Ist nur der stacktrace zum zweiten Problem, das erste , dass zu viele Dependencies reingezogen werden, die ich nicht will, hat damit nichts zu tun.


```
!ENTRY org.eclipse.jface 4 2 2010-10-07 11:25:09.689
!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.jface".
!STACK 0
java.lang.NoClassDefFoundError: com/my_company/dao/DAOException
	at com.my_company.rcp.setscrewdriver.ui.editor.SSDSelectionEditorV2.initializeLocalConfig(SSDSelectionEditorV2.java:619)
	at com.my_company.rcp.setscrewdriver.ui.editor.SSDSelectionEditorV2.createPartControl(SSDSelectionEditorV2.java:194)
	at org.eclipse.ui.internal.EditorReference.createPartHelper(EditorReference.java:670)
	at org.eclipse.ui.internal.EditorReference.createPart(EditorReference.java:465)
	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.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:1254)
	at org.eclipse.ui.internal.PartStack.setSelection(PartStack.java:1207)
	at org.eclipse.ui.internal.PartStack.showPart(PartStack.java:1606)
	at org.eclipse.ui.internal.PartStack.add(PartStack.java:497)
	at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:103)
	at org.eclipse.ui.internal.PartStack.add(PartStack.java:483)
	at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:112)
	at org.eclipse.ui.internal.EditorSashContainer.addEditor(EditorSashContainer.java:63)
	at org.eclipse.ui.internal.EditorAreaHelper.addToLayout(EditorAreaHelper.java:225)
	at org.eclipse.ui.internal.EditorAreaHelper.addEditor(EditorAreaHelper.java:213)
	at org.eclipse.ui.internal.EditorManager.createEditorTab(EditorManager.java:778)
	at org.eclipse.ui.internal.EditorManager.openEditorFromDescriptor(EditorManager.java:677)
	at org.eclipse.ui.internal.EditorManager.openEditor(EditorManager.java:638)
	at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched(WorkbenchPage.java:2860)
	at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:2768)
	at org.eclipse.ui.internal.WorkbenchPage.access$11(WorkbenchPage.java:2760)
	at org.eclipse.ui.internal.WorkbenchPage$10.run(WorkbenchPage.java:2711)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2707)
	at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2691)
	at com.my_company.rcp.setscrewdriver.action.OpenEditorActionDelegate.run(OpenEditorActionDelegate.java:151)
	at com.my_company.rcp.setscrewdriver.ui.view.action.OpenEditorAction.run(OpenEditorAction.java:18)
	at com.my_company.rcp.setscrewdriver.ui.view.SSDMainView$2.doubleClick(SSDMainView.java:199)
	at org.eclipse.jface.viewers.StructuredViewer$1.run(StructuredViewer.java:824)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49)
	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
	at org.eclipse.jface.viewers.StructuredViewer.fireDoubleClick(StructuredViewer.java:822)
	at org.eclipse.jface.viewers.StructuredViewer.handleDoubleSelect(StructuredViewer.java:1113)
	at org.eclipse.jface.viewers.StructuredViewer$4.widgetDefaultSelected(StructuredViewer.java:1225)
	at org.eclipse.jface.util.OpenStrategy.fireDefaultSelectionEvent(OpenStrategy.java:238)
	at org.eclipse.jface.util.OpenStrategy.access$0(OpenStrategy.java:235)
	at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:296)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3540)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3161)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at com.my_company.rcp.setscrewdriver.SetScrewDriverApplication.start(SetScrewDriverApplication.java:20)
	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: com.my_company.dao.DAOException
	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)
	... 68 more
```


----------



## Wildcard (7. Okt 2010)

Du solltest dir angewöhnen mit einer klar definierten Target Platform zu arbeiten. Die Abhängigkeiten direkt aus deiner IDE zu ziehen führt ins Chaos.


----------



## dzim (8. Okt 2010)

Das heißt, ich sollte eine separate Target-Platform anlegen, oder was?
Soweit so gut - aber wenn einige der benutzten Plugins Abhängigkeiten zu irgend etwas abstrusen haben wie soll ich dann verhindern, dass sie a) trotzdem integriert werden oder wenigstens b) das Programm am Ende überhaupt startet?
Nimm's mir nicht krumm, aber was das angeht steh ich wirklich ein wenig auf dem Schlauch...


----------



## dzim (8. Okt 2010)

Nun ja, ich hab mal eine eigene Target Platform definiert, aber jetzt werden bestimmte Eintrage nicht gefunden.
Erst klappte es mit SWT nicht, dann - bei einer neuen Target Platform - wurde org.eclipse.core.runtime.FileLocator nicht als import gefunden. Und ja: ich habe die org.eclipse.core.runtime.* plugins ausgewählt...
Ich versteh das ganze nicht...


----------



## dzim (8. Okt 2010)

Ok - streicht den letzten Satz! Es waren nur noch andere Abhängigkeiten nicht erfüllt gewesen. Aber wie ich es drehe und wende - ob ich es manuell zusammensuche oder mich (anscheinen fälschlicherweise) auf die "Add Required"-Funktion verlasse, ich ende immer wieder mit weitaus mehr Plugins als ich meiner Meinung nach benötige...


----------



## dzim (8. Okt 2010)

Ich bin der ganzen Sache ein wenig hinterhergegangen und kann jetzt folgendes feststellen:
Das Problem kommt wahrscheinlich durch neue Abhängigkeiten des von mir auch verwendeten Plugins org.eclipse.ui.navigator.resource (ich habe auf Basis des CNF mal einen Plugin-Browser für eigene Plugins konstruiert).
Dieses Plugin benötigst jetzt offensichtlich org.eclipse.ltk.core.refactoring und ~.ui.refactoring - welche wiederum abhängigkeiten zum Team-Plugin haben. Ich sehe keine Möglichkeit (ohne selbst in den Code des Plugins einzugreifen) diese Abhängigkeiten zu beseitigen, also werde ich wohl doch auf eine nicht-CNF-Lösung (die ich zum Glück besitze) zurückgreifen, um durch die verfügbaren Plugins zu Browsen.
So ein Sch***!


----------



## Wildcard (8. Okt 2010)

Du solltest dir vorher überlegen gegen was du eigentlich entwickeln willst. Bei einer minimalen RCP fängst du mit dem org.eclipse.rcp Feature als Target Platform an. Wenn deine Anwendung mehr einen IDE Charakter hat nimmst du das org.eclipse.ide Feature als Ausgangsbasis. Von da aus nimmst du *kontrolliert* weitere Bundles auf. Wenn du zB EMF brauchst, dann das EMF Feature, Java -> JDT Feature usw.


----------



## dzim (8. Okt 2010)

Ja du hast da natürlich recht, aber jetzt ist das Kind schon in den Brunnen gefallen und ich muss im Nachhinein feststellen welche Plugins/Features ich brauche...
Aber ich will damit nicht nörgeln! Im Gegenteil! Denn so oder so haben mein Kollege und ich somit heute das ganze auf recht brauchbare Art und Weise gelöst.


----------

