Hallo,
gibt es hier Experten die Eclipse RCP (e4) mit JavaFX entwickeln?
Ich habe ein Projekt damals mit Eclipse Luna (4.4.1) und Java 8 erstellt, das ganze auch von SWT auf JavaFX portiert, auch Teile der Open Source SWTChart auf JavaFX portiert. Die Anwendung ist als e4 (RCP) realisiert, hauptsächlich da ich mir hier die Vorteile von Window Management (Views, Editors, Perspectives) verspreche und nutzt e(fx)clipse in Version 1.1.0 um JavaFX innerhalb von Eclipse RCP zu ermöglichen.
Den Code aktualisiere ich innerhalb dieser Umgebung und das geht gut, schöner und mehr Spaß machen würde es mal auf die aktuellen Versionen zu wechseln. Mehrmals versucht, Tage verbracht und immer gescheitert. Auch der Versuch eine Hello-World Eclipse RCP (e4) Applikation mit Java FX zu erstellen scheitert mit den neuen Versionen, habe alle Anleitungen durch, Foren durchsucht....
Ziel: Hello-World Eclipse RCP (e4) mit Java FX auf aktueller Eclipse Platform, Java, JFX, e(fx)clipse - das über Windows CMD gestartet werden kann. Muss nicht .exe sein, kann auch über java ... gestartet werden.
Gerne Eclipse 2012-12 RCP, Adoptium jdk-21.0.5+11, OpenFX javafx-sdk-21.0.5, e(fx)clipse 3.9 - aber auch gerne was von vor 1-2 Jahren was zusammen geht
Versucht habe ich es mit dieser Anleitung https://tomsondev.bestsolution.at/2...efxclipse-rcp-development-for-java11-and-pde/ und diesen Versionen
Eclipse: Eclipse 2019-12 // Eclipse IDE for RCP and RAP Developers (includes incubating components)
JDK: AdoptJDK-11 = Adoptium OpenJDK 11 (LTS) - 11.0.25+9 (64bit Win)
JFX: JavaFX-SDK-11 11.0.2
e(fx)clipse: e(fx)clipse 3.6.0
Mit meinen alten Versionen gibt es dann zwei Schritte um ein Executable zu erstellen: Maven und dann ANT. Wie ich aus anderen Beiträgen verstehe, wird der ANT Schritt so nicht mehr funktionieren (javafxpackager no longer exists), und man müsste eher jlink/jpackage verwenden. Vielleicht brauche ich diesen Schritt auch gar nicht, so lange ich nach dem Maven build die Anwendung über CMD starten könnte.
Nachdem das Maven build geht, bekomme ich ein product (my.app.app.product-win32.win32.x86_64.zip) und auch als entpackte Version. Hier sollte man doch auch die Applikation mit eclipse.exe, die dort enthalten ist, starten können.
Ich bekomme dann
kompletter log:
gibt es hier Experten die Eclipse RCP (e4) mit JavaFX entwickeln?
Ich habe ein Projekt damals mit Eclipse Luna (4.4.1) und Java 8 erstellt, das ganze auch von SWT auf JavaFX portiert, auch Teile der Open Source SWTChart auf JavaFX portiert. Die Anwendung ist als e4 (RCP) realisiert, hauptsächlich da ich mir hier die Vorteile von Window Management (Views, Editors, Perspectives) verspreche und nutzt e(fx)clipse in Version 1.1.0 um JavaFX innerhalb von Eclipse RCP zu ermöglichen.
Den Code aktualisiere ich innerhalb dieser Umgebung und das geht gut, schöner und mehr Spaß machen würde es mal auf die aktuellen Versionen zu wechseln. Mehrmals versucht, Tage verbracht und immer gescheitert. Auch der Versuch eine Hello-World Eclipse RCP (e4) Applikation mit Java FX zu erstellen scheitert mit den neuen Versionen, habe alle Anleitungen durch, Foren durchsucht....
Ziel: Hello-World Eclipse RCP (e4) mit Java FX auf aktueller Eclipse Platform, Java, JFX, e(fx)clipse - das über Windows CMD gestartet werden kann. Muss nicht .exe sein, kann auch über java ... gestartet werden.
Gerne Eclipse 2012-12 RCP, Adoptium jdk-21.0.5+11, OpenFX javafx-sdk-21.0.5, e(fx)clipse 3.9 - aber auch gerne was von vor 1-2 Jahren was zusammen geht
Versucht habe ich es mit dieser Anleitung https://tomsondev.bestsolution.at/2...efxclipse-rcp-development-for-java11-and-pde/ und diesen Versionen
Eclipse: Eclipse 2019-12 // Eclipse IDE for RCP and RAP Developers (includes incubating components)
JDK: AdoptJDK-11 = Adoptium OpenJDK 11 (LTS) - 11.0.25+9 (64bit Win)
JFX: JavaFX-SDK-11 11.0.2
e(fx)clipse: e(fx)clipse 3.6.0
Mit meinen alten Versionen gibt es dann zwei Schritte um ein Executable zu erstellen: Maven und dann ANT. Wie ich aus anderen Beiträgen verstehe, wird der ANT Schritt so nicht mehr funktionieren (javafxpackager no longer exists), und man müsste eher jlink/jpackage verwenden. Vielleicht brauche ich diesen Schritt auch gar nicht, so lange ich nach dem Maven build die Anwendung über CMD starten könnte.
Nachdem das Maven build geht, bekomme ich ein product (my.app.app.product-win32.win32.x86_64.zip) und auch als entpackte Version. Hier sollte man doch auch die Applikation mit eclipse.exe, die dort enthalten ist, starten können.
Ich bekomme dann
Java:
Unresolved requirement: Require-Capability: osgi.ee; filter:="(&(osgi.ee=JavaSE)(version=11))"
kompletter log:
Code:
!SESSION 2025-01-02 14:57:33.049 -----------------------------------------------
eclipse.buildId=unknown
java.version=11.0.25
java.vendor=Eclipse Adoptium
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US
Command-line arguments: -os win32 -ws win32 -arch x86_64
!ENTRY my.app.app 4 0 2025-01-02 14:57:33.665
!MESSAGE FrameworkEvent ERROR
!STACK 0
org.osgi.framework.BundleException: Could not resolve module: my.app.app [9]
Unresolved requirement: Require-Capability: osgi.ee; filter:="(&(osgi.ee=JavaSE)(version=11))"
at org.eclipse.osgi.container.Module.start(Module.java:444)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1634)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1613)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1585)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1528)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)
!ENTRY my.app.app 2 0 2025-01-02 14:57:33.861
!MESSAGE Could not resolve module: my.app.app [9]
Unresolved requirement: Require-Capability: osgi.ee; filter:="(&(osgi.ee=JavaSE)(version=11))"
!ENTRY org.eclipse.osgi 4 0 2025-01-02 14:57:33.862
!MESSAGE Application error
!STACK 1
org.eclipse.core.runtime.CoreException: Plug-in "org.eclipse.fx.ui.workbench.fx" was unable to instantiate class "org.eclipse.fx.ui.workbench.fx.E4MainThreadApplication".
at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.throwException(RegistryStrategyOSGI.java:194)
at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:188)
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.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:191)
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:566)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:653)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:590)
at org.eclipse.equinox.launcher.Main.run(Main.java:1499)
Caused by: java.lang.NoClassDefFoundError: com/sun/javafx/application/PlatformImpl$FinishListener
at java.base/java.lang.Class.getDeclaredConstructors0(Native Method)
at java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3137)
at java.base/java.lang.Class.getConstructor0(Class.java:3342)
at java.base/java.lang.Class.newInstance(Class.java:556)
at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:184)
... 15 more
Caused by: java.lang.ClassNotFoundException: com.sun.javafx.application.PlatformImpl$FinishListener cannot be found by org.eclipse.fx.ui.workbench.fx_3.4.1.201810030600
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:484)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:395)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:387)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:150)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:527)
... 20 more