Eclipse build.properties

Tsa

Mitglied
Hey,
ich arbeite an einem Eclipse Projekt mit GEF und will eine fremde library hinzufügen.
Diese Library liegt in einem anderen Projekt:

Projekt 1: Applikation
Projekt 2: customized externe library

Bisher habe ich es so hinbekommen, dass alles compiliert, also die library zum compilieren hinzugezogen wird. Beim Starten der Applikation wird allerdings eine Exception geworfen:
java.lang.NoClassDefFoundError:

An die build.properties habe ich die .jar schon angehängt,
Ich vermute das Problem an folgender Stelle:
Ich habe die library ausgecheckt aus SVN und dann in eclipse mit import existing projects importiert. Der Name in der workspace unterscheidet sich allerdings mit dem Pfad im Dateisystem.
Kann mir einer sagen, welchen Pfad ich nun nehmen muss um die .jar korrekt in die build.properties einzufügen? Gibt es noch einen anderen Punkt im eclipse projekt wo die Libraries angegeben werden müssen?
Vielen Dank und beste Grüße,
Jens
 
Hi,
warum kopierst du die Library.jar nicht einfach in einen ./lib Order von deinem Projekt, machst dann einen Rechtsklick auf die Jar-Datei -> Build Path -> Add to Build Path?

Gruß

Fabio
 
Die externe library wird mit einem Ant Script gebaut. Wenn ich was verändere muss ich also immer das Ant script ausführen und dann müsste ich noch zusätzlich die jar kopieren. Das ist keine gute Lösung. Das Ant Script anpassen will ich eignetlich auch ungern (zum einen, weil ich nicht so viel Ahnung davon habe, zum anderen weil ich wenig an dem Projekt der externen library ändern möchte)
Zudem besitzen wir ein extra Projekt indem externe libraries liegen, da viele große libraries dabei sind und sie so nicht in den Branches mit gezogen werden müssen. Also bin ich mir sicher das es irgendwie geht, aber ich scheine einen Punkt zu übersehen, andem ich den Pfad zum .jar hinzufügen muss oder ich benutze den falschen Pfad.
 
Dann mach einen Rechtsklick im Package Explorer -> Build Path -> Configure Build Path
Dann gehst du in den Reiter Libraries -> Add External JARs... -> suche dein Jar und füge es hinzu

Gruß

Fabio
 
Das habe ich alles schon gemacht. Da es im Workspace ist, reicht auch add jar.
Er erkennt auch die Klassen und merkt mir nichts rot an. Er kompiliert auch und meine Unit-Tests laufen auch. Aber wenn ich die Applikation mit dem Eclipse RCP plugin.xml file starten will, wirft er mir die Exception.
Das bedeutet für mich, dass er zum Bauen die jar nicht benutzt oder?
Wie ändere ich das? Ich denke nicht, dass es über den normalen build-path geht, da es eine Eclipse-Plugin sache ist.
 
Klar, wenn es hilft ;)
Code:
eclipse.buildId=unknown
java.version=1.7.0_02
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE
Framework arguments:  -product AnimationswerkzeugGEF.product
Command-line arguments:  -product AnimationswerkzeugGEF.product -data 
../runtime-AnimationswerkzeugGEF.product -dev .metadata/.plugins/org.eclipse.pde.core/AnimationswerkzeugGEF.product/dev.properties -os win32 -ws win32 -arch x86_64 -consoleLog

!ENTRY org.eclipse.equinox.registry 4 1 2012-01-08 15:11:31.919
!MESSAGE Unable to create view ID AnimationswerkzeugGEF.player: Plug-in "AnimationswerkzeugGEF" was unable to instantiate class "main.player.Player".
!STACK 0
java.lang.NoClassDefFoundError: com/library/main/Exception
	at java.lang.Class.getDeclaredConstructors0(Native Method)
	at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
	at java.lang.Class.getConstructor0(Unknown Source)
	at java.lang.Class.newInstance0(Unknown Source)
	at java.lang.Class.newInstance(Unknown Source)
	at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:184)
	at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:905)
	at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243)
	at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:55)
	at org.eclipse.ui.internal.WorkbenchPlugin.createExtension(WorkbenchPlugin.java:260)
	at org.eclipse.ui.internal.registry.ViewDescriptor.createView(ViewDescriptor.java:63)
	at org.eclipse.ui.internal.ViewReference.createPartHelper(ViewReference.java:327)
	at org.eclipse.ui.internal.ViewReference.createPart(ViewReference.java:229)
	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:534)
	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:1245)
	at org.eclipse.ui.internal.PartStack.setSelection(PartStack.java:1198)
	at org.eclipse.ui.internal.PartStack.showPart(PartStack.java:1597)
	at org.eclipse.ui.internal.PartStack.createControl(PartStack.java:643)
	at org.eclipse.ui.internal.PartStack.createControl(PartStack.java:570)
	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:2714)
	at org.eclipse.ui.internal.WorkbenchWindow$27.run(WorkbenchWindow.java:3023)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.ui.internal.WorkbenchWindow.setActivePage(WorkbenchWindow.java:3004)
	at org.eclipse.ui.internal.WorkbenchWindow.busyOpenPage(WorkbenchWindow.java:799)
	at org.eclipse.ui.internal.Workbench$23.runWithException(Workbench.java:1224)
	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:135)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4140)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3757)
	at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:803)
	at org.eclipse.ui.internal.Workbench$33.runWithException(Workbench.java:1595)
	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:135)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4140)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3757)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2494)
	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:674)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:667)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at main.plugin.Application.start(Application.java:30)
	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:344)
	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:622)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
Caused by: java.lang.ClassNotFoundException: com/library/main/Exception
	at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:513)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
	at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	... 66 more
 
Zuletzt bearbeitet von einem Moderator:
Ich habe zwar keine zur Hand, aber das würde ich ausschließen, da die library selbst mit Java 7 von mir gebaut ist, dann hätte er schon hier was gemeldet oder?
Ist Java nicht durchgängig abwärtskompatibel?
Beste grüsse, Jens
 
Zurück