01.11.21 1176 Views Kommentare [] 0 0

credit: ©Gorodenkoff

JAVA Blog

JavaFX: Ausführbare jar-Datei mit IntelliJ erstellen

Seit Java 9 ist es mit IntelliJ nicht mehr ohne Weiteres nativ möglich, eine ausführbare jar-Datei für deine JavaFX-Anwendung zu erstellen. Wir zeigen dir in diesem Tutorial einen entsprechenden Workaround.

    Inhaltsverzeichnis

  1. Das Problem
  2. JavaFXC jar erstellen

Falconbyte unterstüzen

Betrieb und Pflege von Falconbyte brauchen viel Zeit und Geld. Um dir auch weiterhin hochwertigen Content anbieten zu können, kannst du uns sehr gerne mit einem kleinen "Trinkgeld" unterstützen.

Das Problem

In Java 1.8 konnten wir über den Artifact-Builder noch sehr unkompliziert eine IDE-unabhängige JavaFX-Applikation als ausführbare jar-Datei erstellen.

In den Folgeversionen von Java war JavaFX nicht mehr integriert und so erhalten wir bereits, wenn wir in IntelliJ zum Artifact Builder wechseln, einen bösen Warnhinweis:

Can't build artifact – fx:deploy is not available in this JDK

Der fx:deploy Job, von dem hier die Rede ist, war ein Teil des Ant-Plugins, das für das Packaging des Programms in eine ausführbare jar-Datei verantwortlich war. Dieses Ant-Plugin ist in den aktuellen JDK-Versionen aber nicht mehr enthalten.

Kurzum: Wir können unser JavaFX-Programm nicht ohne Weiteres in eine ausführbare jar-Datei packen.

Es gibt im Netz einige Workarounds für das Problem:

Eine sehr einfache Lösung bietet der youtube-Kanal von The Code Implementation.

Diese Lösung schauen wir uns nun an.

JavaFX als jar-Datei ausführen

Hier der Workaround für das Erstellen einer ausführbaren jar-Datei für dein JavaFX-Programm in IntelliJ:

Schritt 1.

Erstelle im gleichen Paket, in der deine Startklasse liegt, eine neue ebenfalls ausführbare Klasse mit main-Methode:

package sample;

public class FakeMain {

    public static void main(String[] args) {
        sample.Main.main(args);
    }
}                    

Wichtig: Innerhalb der Main-Methode muss die Anweisung nach folgendem Muster stehen:

paketName.Startklasse.main(args); stehen.

Schritt 2.

Wähle in IntelliJ in der oberen Menuleiste File > Project Structure... aus. In dem sich öffnenden Fenster gehst du unter Project Settings zum Punkt Artifacts. Klicke anschließend das "+" Icon und wähle JAR > From modules with dependencies...

JavaFX ausführbare jar-Datei erstellen

Schritt 3.

Im jetzt erscheinen Fenster "Create JAR from Modules" wählst du als Main Class die Klasse FakeMain aus und gibst unten das Zielverzeichnis an, in das die JAR-Datei gespeichert werden soll.

JavaFX ausführbare jar-Datei erstellen

Schritt 4.

Wähle das soeben erstellte Artifact aus und füge ihm alle Dateien aus dem lib (bzw. bin) Ordner des JavaFX-SDKs hinzu (außer einer möglicherweise existierenden zip-Datei). Klicke dazu auf das "+" Zeichen, wähle dann File und füge anschließend die Dateien hinzu.

JavaFX ausführbare jar-Datei erstellen

Schritt 4.

Wähle nun in der oberen Menuleiste von IntelliJ den Punkt Build > Build Articats... aus. Es erscheint ein kleines Pop-Up-Fenster. Klicke hier unter Action auf "Build". Deine ausführbare JAR-Datei sollte nun im angegebenen Verzeichnis liegen.

jar-Datei starten

Um die jar-Datei zu starten, öffnen wir das Terminal unter MacOS bzw. die Eingabeaufforderung unter Windows.

Wechsle jetzt innerhalb des Terminals/ der Eingabeaufforderung zuerst in das Verzeichnis, in dem sich die auszuführende jar-Datei befindet. Gib hierzu dem Befehl cd (mit Leerzeichen) und den entsprechenden Pfad ein. Du kannst auch einfach den Ordner direkt aus dem Finder bzw. DateiExplorer via Drag & Drop in das Terminal ziehen (cd und Leerzeichen müssen aber vorher in jedem Fall eingetippt werden):

cd /users/PfadzurDatei                  

Letzter Schritt: Gib den Befehl zum Ausführen der jar-Datei nach diesem Muster ein:

java -jar dateiname.jar                    

Primitive Datentypen

Am Ende des Kapitels werden Sie wissen, wie Primitive Datentypen korrekt eingesetzt werden.

Pass-by-value in Java

wie genau der Vorgang der Parameterübergabe bei Methoden abläuft, klären wir hier.

Initializer

Eher selten aber praktisch!

FALCONBYTE.NET

Handmade with 🖤️

© 2018-2022 Stefan E. Heller

Impressum | Datenschutz | Changelog

Falconbyte GitHub facebook programmieren lernen twitter programmieren lernen discord programmieren lernen