Eclipse + e(fx)clipse + SceneBuilder
Die Beschreibung der Kombination JDK+JavaFX (Zulu) folgt später, erfordert aber keine speziellen Kenntnisse.
Im Anschluss findet sich eine Beschreibung der wahrscheinlich problem- und kompromisslosesten Installationsart der Kombination Eclipse + JDK + JavaFX + SceneBuilder + e(fx)clipse.
1. Überblick JDK + JavaFX in Eclipse
Es gibt diesbezüglich einige Konfigurationsmöglichkeiten für die oben erwähnte Kombination.
Wesentlch dafür sind 2 Fakten:
-
In Java SE 7 Update 6 bis Java 10 war JavaFX Teil des JDK, seit Java 11 ist es ausgegliedert und als separate Bibliothek verfügbar.
-
Mit Java 9 wurde mit dem Modul-Konzept eine neue Gliederungsebene eingeführt und und innerhalb des JDK auch umgesetzt.
Details folgen ...
Für das Entwickeln von JavaFX-Applikationen kann entweder ein OpenJDK-Build mit integriertem JavaFX (z.B. Zulu-Builds) – mit nachstehend beschriebenem Javadoc-Nachteil – installiert werden oder man verwendet den folgenden Ansatz, der – soweit mir bekannt – nachteilsfrei ist.
Für die JDK-Installation und JavaFX-Installation siehe Tools – JDK und JavaFX
2. Problembeschreibung zu Kombi-Paketen JDK + JavaFX
Es gibt Organisationen bzw. Firmen (z.B. Zulu-Builds), die auch aktuelle JDKs mit JavaFX kombiniert bereitstellen, allerdings bieten sie keine kombinierten API-Doc (Javadoc) Pakete an.
Da Eclipse es nicht erlaubt, einem JAR-File mehr als ein API-Doc (Javadoc) "Paket" zuzuordnen, kann nur entweder das Standard-JDK- oder JavaFX-Paket verknüpft werden.
Dies hat zur Folge, dass zwar die Dokumentation direkt innerhalb von Eclipse funktioniert (hier wird die Dokumentation aus den JDK- bzw. sonstigen Paketen der bereitgestellte Quelltext direkt erzeugt), aber das oft wesentlich übersichtlichere direkte Öffnen (von der Eclipse-Javadoc-Ansicht) in einem Web-Browser erfordert eine "traditionelle" Bereitstellung und funkioniert daher nur entweder für JDK oder für JavaFX.
Daher wird hier im Weiteren (nach der Grundinstallation von Eclipse) ein bislang problemfei wirkender Ansatz beschrieben, der ein normales JDK mit einem separaten JavaFX kombiniert und keine extra Maßnahmen für JavaFX-Projekte erfordert.
3. Herunterladen und Installation von Eclipse samt wichtigen Erweiterungen
Unter https://www.eclipse.org/downloads/packages/ findet sich zuoberst der empfehlenswerte Eclipse Installer 2021‑03 R für die wichtigsten Betriebssysteme. Diesen downloaden und die EXE-Datei starten.
Es werden einige Konfigurationen angeboten. Für uns ist die erste möglich, die zweite aber vermutlich praktischer: Eclipse IDE for Enterprise Java and Web Developers
Die vorgeschlagene Java 11+ VM sollte die zuvor installierte sein (in meinem Fall C:\Program Files\Zulu\zulu-16
), sonst Popup-Liste ansehen und den gewünschten Eintrag auswählen.
Notfalls mit dem anklickbaren Datei-Selektor den Pfad des JDK-Basisverzeichnisses wählen (darin sollten sich die Ordner '`bin`, conf
, demo
, jmods
, lib
, etc. befinden).
Das vorgeschlagene Installationsverzeichnis ist bei mir C:\Users\mxrenkin\Eclipse\jee-2021-03
, der idealerweise unverändert übernommen wird.
3.1. Plugins für JDK-16 Funktionalitäten sowie JavaFX-Support installieren
Die Installation erfolgt am einfachsten über Menü Help → Eclipse Marketplace … unter Nutzung des Suchfeldes.
3.1.1. JDK-16 Unterstützung
Da JDK 16 erst ca. zeitgleich mit Eclipse 2021-03 erschienen ist, muss die Java-16-Unterstützung per Plugin nachinstalliert werden (empfehlenswert, um maximale Konformität mit meiner Installation zu erreichen, was Problemlösungen erleichtern sollte)
Dazu im Marketplace-Suchfeld eintippen: "Java 16" und das Plugin "Java 16 Support for Eclipse 2021-03 (4.19)" lokalisieren und installieren.
4. JRE-Konfiguration mit JavaFX
Zur Behebung der oben beschriebenen Problematik mit der Javadoc-Dokumentation gibt es eine sehr praktikable Lösung:
Hinzufügen weiterer Bibliotheken zu JRE-Konfigurationen.
Zu jeder dieser zusätzlichen JARs kann jeweils wieder ein Javadoc-Paket verknüpft werden, womit diese Restriktion entfällt.
4.1. Setzen der Default-VM-Args
Um die Funktion zu ermöglichen, muss neben dem Hinzufügen der 8 JavaFX-JARs (siehe unten) lediglich ein Eintrag (einzeilig!) in das Feld Default VM Arguments
erfolgen:
--module-path ${JFX-16} --add-modules javafx.base,javafx.controls,javafx.fxml,javafx.graphics,javafx.media,javafx.web
,
wobei nach --add-modules
alle (möglicherweise) benötigten JavaFX-Module beistrich-getrennt gelistet werden.
Für --module-path
wird entweder der Pfad zum JavaFX lib
-Verzeichnis oder besser (wie oben genutzt) eine String Substitution Variable verwendet.
Diese kann unter Menü Window → Preferences, dort unter Run/Debug → String Substitution mit Button New … angelegt werden:
Name: hier JFX-16
Value: z.B. für Windows etwas wie C:\Users\mxrenkin\Java\OpenJFX\javafx-sdk-16\lib
Description: z.B. Local JavaFX 16 Path
Vorteile der obigen Variablen sind Übersichtlichkeit, Mehrfach-Nutzbarkeit und einfache Korrektur bei Versionswechsel
4.2. Detaillierte Beschreibung der JRE-Konfiguration
Öffnen von Menü Window → Preferences, dort in der linken Hierarchieliste nach Java / Installed JREs navigieren. Falls dort das gewünschte JRE (üblicherweise das JDK) noch nicht gelistet ist, muss dieses mit Button [Add…] hinzugefügt werden. Es öffnet sich ein Formular, in dem der Eintrag Standard VM selektiert und Button [Next>] gedrückt wird.
Nun ist im Feld JRE Home: das JDK-Basisverzeichnis einzutragen/auszuwählen – bei mir C:\Program Files\Zulu\zulu-16
– worauf bei Auswahl eines gültigen Verzeichnisses normalerweise das Java-Runtime-JAR (bei mir C:/Program Files/Zulu/zulu-16/lib/jrt-fs.jar
) automatisch eingetragen wird.
Dieser Eintrag kann mit dem links sichtbaren '>'-Zeichen augeklappt werden und darin sind die Sub-Einträge Source Attachment (schon richtig ausgefüllt – bei mir Source Attachment: C:/Program Files/Zulu/zulu-16/lib/src.zip
) und Javadoc Location ausgefüllt mit der URL zur Online-Dokumentation: https://docs.oracle.com/en/java/javase/16/docs/api/
.
Sinnvollerweise sollte man hier auf die lokale Dokumentation umstellen, um netzwerk-unabhängig darauf zugreifen zu können. Durch Doppelklick oder den entsprechenden Button kann nun der Radio-Button Javadoc in Archive gewählt und der Pfad zur Dokumentations-ZIP-Datei angegeben werden (bei mir C:\Users\mxrenkin\Java\JDK\oracle_jdk-16_doc-all.zip
).
Nun ist noch das Eingabefeld Path within Archive zu füllen. Dies kann wieder durch Button [Browse…] und Aufklappen des ZIP-Files erfolgen. hier ist auszuwählen docs / api
Abschließend sollte noch Button [Validate…] gedrückt werden, was im Erfolgsfall eine Info liefern sollte: "Location is likely valid. Files 'element-list' and 'index.html' have been found".
Somit ist das JDK korrekt und sinnvoll konfiguriert, es fehlt noch das Hinzufügen von JavaFX.
Der finale Task ist nun, alle 8 JARs von JavaFX hinzuzufügen und analog zu konfigurieren (alle haben selbes Source Attachment und selbe Javadoc Location).
Bei mir für C:\Users\mxrenkin\Java\OpenJFX\javafx-sdk-16\lib\javafx.base.jar
:
Source Attachment: C:\Users\mxrenkin\Java\OpenJFX\javafx-sdk-16\lib\src.zip
Javadoc Location: jar:file:/C:/Users/mxrenkin/Java/OpenJFX/openjfx-16-javadoc.zip!/javafx-16-javadoc
Zuletzt sollten die Default VM Arguments
wie oben in Abschnitt 4.1, “Setzen der Default-VM-Args” beschriebenen gefüllt werden.
Nun ist automatisch für jedes Projekt, das diese JRE nutzt, JavaFX verfügbar und es ist nicht nötig, explizit VM-Args in den Run-Configurations zu setzen
TODO: SceneBuilder Download und Installation
e(fx)clipse konfigurieren: * Scenebuilder exe-Pfad bei mir C:\Users\mxrenkin\AppData\Local\SceneBuilder\SceneBuilder.exe * JafaFX 11+ SDK bei mir C:\Program Files\Zulu\zulu-16
Neues JavaFX Projekt: * src/module-info.java löschen * Package Explorer Projekt-Eintrag (neben `src`) JavaFX SDK Rechtsklick -> Build Path -> Remove from Build Path
5. Aktueller SceneBuilder
(Graphisches GUI-Devel-Tool)
Source: siehe GitHub-Projekt https://github.com/gluonhq/scenebuilder