eclipse für JavaFx setuppen

Diskutiere eclipse für JavaFx setuppen im AWT, Swing, JavaFX & SWT Bereich.
B

BigMemo007

Hallo.

Ich verzweifle seit Stunden und es nervt einfach. Ich hab die Grundlagen für Java soweit abgearbeitet und dachte der nächste logische Schritt wäre als Anfänger JavaFx zu lernen, damit ich schönere Fenster als mit Swing gestalten kann. Aber nein, so einfach macht es mir Java mit eclipse im Zusammenarbeit nicht. Gestern 5 Stunden nur mit eclipse rumgespielt, damit der verdammte fx klapp und heute auch nochma 2 Stunden verballert.

Also. Ich habe eclipse IDE 2020-03 installiert. Über den Marketplace habe ich das e(fx)clipse-Plugin 3.6.0 installiert. So. Unter New -> Project -> JavaFX Project kann ich ein Projekt erstellen. So. Zuerst hat er mir die javafx importe nicht gemacht und zeigte mir 11 Fehler an. Dann habe ich openJfx 14 gedownloaded und unter Properties -> Java Build Path -> Classpath als external Jar hinzugefügt. Das hat jetzt den import der javax Klassen gemacht. Nun sagt er mir bei Zeile 15 "scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());" die Fehlermeldungen

Multiple markers at this line
- The type javafx.collections.ObservableList cannot be resolved. It is indirectly referenced from
required .class files
- The method getStylesheets() from the type Scene refers to the missing type ObservableList

Das macht echt keinen Spaß. Warum muss man einen Anfänger so vergraulen als Oracle? Das ist ein Grund für mich gerade echt Java hinzuschmeißen und mit Python anzufangen.

So. Dann habe ich irgendwo das eclipse-SDK-4.6.0-win32-x86_64-distro-2.4.0 gefunden. Das soll angeblich alle JavaFX Pakten beinhalten. Entpackt, gestartet und gibt auch nur Fehlermeldungen. Die Log-Datei sagt:

SESSION 2020-06-16 21:28:24.674 -----------------------------------------------
eclipse.buildId=4.6.0.I20160606-1100
java.version=14.0.1
java.vendor=BellSoft
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE
Command-line arguments: -os win32 -ws win32 -arch x86_64

!ENTRY org.eclipse.equinox.ds 2 0 2020-06-16 21:29:52.301
!MESSAGE [SCR - WorkThread] Timeout occurred! Thread was blocked on processing [QueuedJob] WorkPerformer: [email protected]; actionType 1

!ENTRY org.eclipse.equinox.ds 2 0 2020-06-16 21:29:52.411
!MESSAGE [SCR] Enabling components of bundle org.eclipse.update.configurator did not complete in 30000 ms

!ENTRY org.eclipse.osgi 4 0 2020-06-16 21:30:49.729
!MESSAGE Application error
!STACK 1
org.eclipse.e4.core.di.InjectionException: java.lang.NoClassDefFoundError: javax/annotation/PostConstruct
at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:386)
at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:294)
at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:162)
at org.eclipse.e4.ui.internal.workbench.swt.E4Application.createDefaultHeadlessContext(E4Application.java:490)
at org.eclipse.e4.ui.internal.workbench.swt.E4Application.createDefaultContext(E4Application.java:504)
at org.eclipse.e4.ui.internal.workbench.swt.E4Application.createE4Workbench(E4Application.java:203)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:626)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:604)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:148)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:138)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:673)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:610)
at org.eclipse.equinox.launcher.Main.run(Main.java:1519)
Caused by: java.lang.NoClassDefFoundError: javax/annotation/PostConstruct
at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:151)
at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:375)
... 22 more
Caused by: java.lang.ClassNotFoundException: javax.annotation.PostConstruct cannot be found by org.eclipse.e4.core.di_1.6.0.v20160319-0612
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:398)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:361)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:353)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:161)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 24 more

!ENTRY org.eclipse.e4.ui.workbench 4 0 2020-06-16 21:30:49.763
!MESSAGE FrameworkEvent ERROR
!STACK 0
java.lang.NoClassDefFoundError: javax/annotation/PreDestroy
at org.eclipse.e4.core.internal.di.InjectorImpl.disposed(InjectorImpl.java:426)
at org.eclipse.e4.core.internal.di.Requestor.disposed(Requestor.java:154)
at org.eclipse.e4.core.internal.contexts.ContextObjectSupplier$ContextInjectionListener.update(ContextObjectSupplier.java:78)
at org.eclipse.e4.core.internal.contexts.TrackableComputationExt.update(TrackableComputationExt.java:111)
at org.eclipse.e4.core.internal.contexts.TrackableComputationExt.handleInvalid(TrackableComputationExt.java:74)
at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:176)
at org.eclipse.e4.core.internal.contexts.osgi.EclipseContextOSGi.dispose(EclipseContextOSGi.java:106)
at org.eclipse.e4.core.internal.contexts.osgi.EclipseContextOSGi.bundleChanged(EclipseContextOSGi.java:139)
at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:903)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:213)
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:120)
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:112)
at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:156)
at org.eclipse.osgi.container.Module.publishEvent(Module.java:476)
at org.eclipse.osgi.container.Module.doStop(Module.java:634)
at org.eclipse.osgi.container.Module.stop(Module.java:498)
at org.eclipse.osgi.container.SystemModule.stop(SystemModule.java:191)
at org.eclipse.osgi.internal.framework.EquinoxBundle$SystemBundle$EquinoxSystemModule$1.run(EquinoxBundle.java:165)
at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: java.lang.ClassNotFoundException: javax.annotation.PreDestroy cannot be found by org.eclipse.e4.core.di_1.6.0.v20160319-0612
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:398)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:361)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:353)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:161)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 21 more

Macht echt kein Spaß so!!!!!!!!! Ich will nur programmieren. Ich will mich nicht mit der Deploymentpolitik von Oracle rumschlagen müssen.
 
L

LimDul

Anstelle Dependency händisch hinzuzufügen, wäre Maven oder gradle der bessere weg.

Beispiel für Maven findet sich hier: https://www.vojtechruzicka.com/javafx-getting-started/

Das hat nur indirekt mit der Oracle Politik zu tun, sondern wird dir immer mit externen Libs passieren. Es reicht die Lib A hinzuzufügen, sondern du musst auch alle Libs, die Lib A braucht hinzufügen. Und alle Libs, die diese Libs brauchen usw. Und das nimmt die Maven bzw. gradle ab.
 
L

lam_tr

Hallo.

Ich verzweifle seit Stunden und es nervt einfach. Ich hab die Grundlagen für Java soweit abgearbeitet und dachte der nächste logische Schritt wäre als Anfänger JavaFx zu lernen, damit ich schönere Fenster als mit Swing gestalten kann. Aber nein, so einfach macht es mir Java mit eclipse im Zusammenarbeit nicht. Gestern 5 Stunden nur mit eclipse rumgespielt, damit der verdammte fx klapp und heute auch nochma 2 Stunden verballert.

Also. Ich habe eclipse IDE 2020-03 installiert. Über den Marketplace habe ich das e(fx)clipse-Plugin 3.6.0 installiert. So. Unter New -> Project -> JavaFX Project kann ich ein Projekt erstellen. So. Zuerst hat er mir die javafx importe nicht gemacht und zeigte mir 11 Fehler an. Dann habe ich openJfx 14 gedownloaded und unter Properties -> Java Build Path -> Classpath als external Jar hinzugefügt. Das hat jetzt den import der javax Klassen gemacht. Nun sagt er mir bei Zeile 15 "scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());" die Fehlermeldungen

Multiple markers at this line
- The type javafx.collections.ObservableList cannot be resolved. It is indirectly referenced from
required .class files
- The method getStylesheets() from the type Scene refers to the missing type ObservableList

Das macht echt keinen Spaß. Warum muss man einen Anfänger so vergraulen als Oracle? Das ist ein Grund für mich gerade echt Java hinzuschmeißen und mit Python anzufangen.

So. Dann habe ich irgendwo das eclipse-SDK-4.6.0-win32-x86_64-distro-2.4.0 gefunden. Das soll angeblich alle JavaFX Pakten beinhalten. Entpackt, gestartet und gibt auch nur Fehlermeldungen. Die Log-Datei sagt:

SESSION 2020-06-16 21:28:24.674 -----------------------------------------------
eclipse.buildId=4.6.0.I20160606-1100
java.version=14.0.1
java.vendor=BellSoft
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE
Command-line arguments: -os win32 -ws win32 -arch x86_64

!ENTRY org.eclipse.equinox.ds 2 0 2020-06-16 21:29:52.301
!MESSAGE [SCR - WorkThread] Timeout occurred! Thread was blocked on processing [QueuedJob] WorkPerformer: [email protected]; actionType 1

!ENTRY org.eclipse.equinox.ds 2 0 2020-06-16 21:29:52.411
!MESSAGE [SCR] Enabling components of bundle org.eclipse.update.configurator did not complete in 30000 ms

!ENTRY org.eclipse.osgi 4 0 2020-06-16 21:30:49.729
!MESSAGE Application error
!STACK 1
org.eclipse.e4.core.di.InjectionException: java.lang.NoClassDefFoundError: javax/annotation/PostConstruct
at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:386)
at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:294)
at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:162)
at org.eclipse.e4.ui.internal.workbench.swt.E4Application.createDefaultHeadlessContext(E4Application.java:490)
at org.eclipse.e4.ui.internal.workbench.swt.E4Application.createDefaultContext(E4Application.java:504)
at org.eclipse.e4.ui.internal.workbench.swt.E4Application.createE4Workbench(E4Application.java:203)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:626)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:604)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:148)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:138)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:673)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:610)
at org.eclipse.equinox.launcher.Main.run(Main.java:1519)
Caused by: java.lang.NoClassDefFoundError: javax/annotation/PostConstruct
at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:151)
at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:375)
... 22 more
Caused by: java.lang.ClassNotFoundException: javax.annotation.PostConstruct cannot be found by org.eclipse.e4.core.di_1.6.0.v20160319-0612
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:398)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:361)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:353)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:161)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 24 more

!ENTRY org.eclipse.e4.ui.workbench 4 0 2020-06-16 21:30:49.763
!MESSAGE FrameworkEvent ERROR
!STACK 0
java.lang.NoClassDefFoundError: javax/annotation/PreDestroy
at org.eclipse.e4.core.internal.di.InjectorImpl.disposed(InjectorImpl.java:426)
at org.eclipse.e4.core.internal.di.Requestor.disposed(Requestor.java:154)
at org.eclipse.e4.core.internal.contexts.ContextObjectSupplier$ContextInjectionListener.update(ContextObjectSupplier.java:78)
at org.eclipse.e4.core.internal.contexts.TrackableComputationExt.update(TrackableComputationExt.java:111)
at org.eclipse.e4.core.internal.contexts.TrackableComputationExt.handleInvalid(TrackableComputationExt.java:74)
at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:176)
at org.eclipse.e4.core.internal.contexts.osgi.EclipseContextOSGi.dispose(EclipseContextOSGi.java:106)
at org.eclipse.e4.core.internal.contexts.osgi.EclipseContextOSGi.bundleChanged(EclipseContextOSGi.java:139)
at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:903)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:213)
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:120)
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:112)
at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:156)
at org.eclipse.osgi.container.Module.publishEvent(Module.java:476)
at org.eclipse.osgi.container.Module.doStop(Module.java:634)
at org.eclipse.osgi.container.Module.stop(Module.java:498)
at org.eclipse.osgi.container.SystemModule.stop(SystemModule.java:191)
at org.eclipse.osgi.internal.framework.EquinoxBundle$SystemBundle$EquinoxSystemModule$1.run(EquinoxBundle.java:165)
at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: java.lang.ClassNotFoundException: javax.annotation.PreDestroy cannot be found by org.eclipse.e4.core.di_1.6.0.v20160319-0612
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:398)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:361)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:353)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:161)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 21 more

Macht echt kein Spaß so!!!!!!!!! Ich will nur programmieren. Ich will mich nicht mit der Deploymentpolitik von Oracle rumschlagen müssen.
Kann es sein dass du die JavaFX mithilfe von E4 RCP aufbaust, dann kannst du auch direkt in der plugin.xml die google guice und javax.inject im Dependency Reiter hinzufügen.
 
M

maschl

Mein Weg für Javafx mit eclipse (klappt problemlos mit Linux ):

1. openjdk 11 installieren. (findet sich für Linux in den Repositories)
2. von der "Gluon-Seite" openjfx 11 herunterladen und entpacken. Im Unterverzeichnis lib finden sich XXX.so Dateien.
Nur die xxx.so Dateien nach /usr/lib/jvm/jdk-11/lib kopieren. Für Windows müssen die xxx.dll in den bin Ordner.
Die xxx.jar Dateien werden in eclipse benötigt. Ich kopiere sie mir gleich in ein "Entwicklungs-Dir".
3. In eclipse
muß JavaFX installiert werden -> Home->Marketplace
in Properties->Java Build Path->ClassPath die xxx.jar Dateien aus dem "Entwicklungs-Dir" einbinden.
für das zu entwickelnde Projekt unter ->run->Run Configurations->Projekt->VMArguments:
--module-path /Entwicklungs-Dir --add-modules=javafx.base,javafx.controls,javafx.fxml,javafx.graphics
4. Das fertige Projekt kompilieren
Export->runable jarFile -> copy required Lib...... next to generated jar.
5. Der Aufruf (am Besten mit einem kleinen Script) :
#!/bin/sh
cd /mein ProgrammVerzeichnis
exec java -p ./runablejarFile_lib --add-modules=javafx.base,javafx.controls,javafx.fxml,javafx.graphics -jar ./meinProgramm.jar

Ich hoffe es hilft ein wenig weiter. Klappt übrigens sinngemäß auch mit Windows 10
 
Thema: 

eclipse für JavaFx setuppen

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben