exe File

Juelin

Bekanntes Mitglied
Hallo,
ist es möglich aus einem Netbeans Projekt ein lauffähiges EXE File zu erstellen?
Danke und Gruß
Jürgen
 
Du nutzt zwar Netbeans aber Du hast ein Maven Projekt.

Da Du sowohl eine Modulbeschreibung als auch das JavaFX Plugin hast, kannst Du einfach einmal das Ziel javafx:jlink starten. Evtl. baut Dir das schon ein erstes Image zusammen. Da hast Du dann aber noch eine Anwendung, dessen exe Du einfach starten kannst. Aber wenn das klappt, dann hast Du da einen ersten Schritt.

Damit Du auch ein Script zum starten der Anwendung bekommst, solltest Du in die configuration vom javafx-maven-plugin noch etwas reinnehmen wie <launcher>myapp</launcher>.

Generell wären meine Ratschläge:
a) Aktualisierung des javafx-maven-plugin auf aktuelle Version (0.0.8)
b) Aktualisierung Java auf Version 17 (erste LTS Version, die auch jpackage als Tool hat).

Wenn Du Mindestens Java 14 einsetzt, dann hast Du ein Tool jpackage. Mit diesem kannst Du aus dem Image, das das javafx-maven-plugin mit jlink erstellt hat, ein sogenanntes Application Image erstellen. Dann hast Du statt einer batch Datei zum Start direkt eine exe. Du hast dann zwar immer noch keine einzelne exe aber evtl. reicht Dir das dann schon.

Wenn Du auf eine neuere Version von JavaFX aufsetzen willst, dann kannst Du prinzipiell den jpackage Aufruf auch über ein maven plugin automatisch erledigen. Ich selbst verzichte gerne auf die Modulbeschreibung (wieso wirst Du vermutlich merken, wenn Du das javafx:jlink testest) und nutze einfach zwei Plugins zum kopieren des Abhängigkeiten und dann dem Aufruf von jpackage ohne vorher jlink laufen zu lassen.
 
Danke Konrad,
gibt es da eine noch etwas genauere Beschreibung?
Also Schritt für Schritt was man tun muss.
Gruß
Jürgen
 
Ein Einstieg ist die Getting Started Dokumentation von openjfx.io:

Dort den Punkt Runtime Image > Modular with maven

Die Dokumentation kann teilweise irritierend sein, weil halt nacheinander alle möglichen Konstellationen beschrieben werden angefangen von der Möglichkeit, alles von Hand zu machen über Maven und Gradle hin zu diversen Entwicklungsumgebungen. Das Meiste kannst Du komplett ignorieren: Du willst (vermutlich) nichts manuell installieren und manuell in einer Entwicklungsumgebung einrichten. Du hast ein Maven Projekt und willst dies (vermutlich) auch weiter nutzen.

Eine andere Möglichkeit kann bei Maven aber auch einfach sein: Man "klaut" sich alles zusammen. Bei maven geht es relativ gut, dass man sich Konfigurationsteile zusammen klauen kann. So findet sich unter https://github.com/kneitzel/JavaFXMavenApp ein Projekt Template auf dem Du aufsetzen könntest. Ich habe die letzten Tage ein paar Aktualisierungen gemacht (z.B. bezüglich Java 21) und angefangen, das jetzt auch endlich zu dokumentieren. Das ist aber noch ganz am Anfang aber ggf. willst Du ja den Branch UpdateDocumentation ansehen - da werden nach und nach jetzt Erläuterungen dazu kommen. (Ob ich gut erläutern kann, weiss ich nicht. Musst Du dann entscheiden.)

Die notwendigen Schritte wären:
a) modul-info.java kannst Du löschen
b) eine separate Main Klasse nur mit einer main Methode, die Deine bisherige main Methode aufruft, könnte notwendig sein
c) Im pom.xml kannst Du einfach den Inhalt vom Profil kopieren + die Properties, die ich da verwende (Erkennbar an dem ${....})

Das würde Sinn machen aus meiner Sicht, denn ich vermute, dass der jlink Weg über das javafx plugin auf Grind von Abhängigkeiten scheitern wird. Aber das wirst Du merken, wenn Du es probieren solltest 🙂
 
Hallo Konrad,
so auch das ist geschafft.
Siehe Beschreibung

Code:
Beschreibung JavaFXMaven ausdührbares Windowsprogramm erstellen

Verzeichnis JavaMavenFenster-main kopieren nach
JavenMaven.........-main     ........ = Name StartProgramm in Java

Source aus Netbeans das Verzeichnis main in JavaFXMaven Verzeichnis src kopieren
Files pmd-ruleset.xml und pom.xml anpassen.

Dann laufen lassen in cmd Pfad auf JavaFXMaven stellen
mvnw package
mvnw javafx:run
mvnw -DImage claen install

Eventuell im Main Souce
die class und FXMLoader die Namen ändern

Verzeichnis /target prüfen
in E:\java\JavenMavenEreignis-main\traget\jpackage\Projekt11\Projekt11.exe

bat-file anlegen E:\java\JavenMavenEreignis-main\Projekt11.bat
e:
cd java
cd JavaFXMavenFenster-main
mvnw javafx:run


Verzeichnis target kann gelöscht werden, dann aber wieder neu compelieren

PATH Maven
E:\java\JavaMavenFenster-main

Beispiel
copy E:\java\JavaMavenFenster-main E:\java\JavenMavenEreignis-main
copy E:\java\Netbeans\Projekt11\projekt11\src E:\java\JavenMavenEreignis-main
E:\java\JavenMavenEreignis-main\pom.xml anpassen
    <groupId>com.juelin.projekt11</groupId>
    <artifactId>Projekt11</artifactId>
    <main.class>com.juelin.projekt11.Ereignis</main.class>
einfügen in pom.xml
        <dependency>
            <groupId>org.mariadb.jdbc</groupId>
            <artifactId>mariadb-java-client</artifactId>
            <version>3.3.3</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>2.0.13</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>2.0.13</version>
        </dependency>
E:\java\JavenMavenEreignis-main\pmd-ruleset.xml anpassen
    <property name="packages" value="com.juelin.projekt11" />
cd  E:\java\JavenMavenEreignis-main

So nochmals Danke.
Gruß
Jürgen
 
Du kannst übrigens Maven Goals auch ad hoc in NetBeans laufen lassen: Rechtsklick auf das Projekt -> Run Maven -> Goals...

1715216747681.png

Im daraufhin erscheinenden Fenster einfach bei Goals die gewünschten Goals eintragen (z. B. jpackage:jpackage). Bei Remember as: kannst Du auch einen Namen eingeben, unter dem die Einstellungen für einen späteren Aufruf gespeichert werden sollen (im Bild oben siehst Du z. B., dass ich zwei Einstellungen jlink und jpackage gespeichert habe):

1715216924956.png
 
Hallo mihe7,
danke für den Hinweis.
Was muss man bei Goals eingeben? jpackage geht auch Image oder run.
Was gibt man bei Profiles an?
Macht man was beiAdd?
Gruß
Jürgen
 
Wenn Du mein POM soweit übernommen hast, dann wird z.B. aus dem Aufruf:
mvnw -DImage claen install
(Da ist ein Tippfehler - clean und nicht claen!)

Image ist ein Profil, das Du ausgewählt hast. (Eigentlich -PImage, aber ich habe da auch eine Activation über das Define Image). Daher solltest Du da Image als Profil eingeben.

Goals sind clean und install.

Damit solltest Du dann diesen Aufruf abgebildet haben,

Du hattest die aufrufe untereinander - hier ist wichtig: Die Aufrufe sind unabhängig voneinander. Wenn du es bauen willst incl. dem Image, dann reicht ganz allein dieser Aufruf. Du brauchst kein javafx:run oder package goal vorab laufen lassen.
 
@Juelin nachdem, was @KonradN geschrieben hat, würde ich bei Goals einfach clean install und bei Profiles image eintragen. Bei Add kann man eben Maven Properties hinzufügen (die Du in der Befehlszeile mit -D definierst), brauchst Du hier aber nicht.
 
wie ich schon geschrieben habe, so habe ich das EXE File erstellt.
Dann laufen lassen in cmd Pfad auf JavaFXMaven stellen

mvnw package
mvnw javafx:run
mvnw -DImage clean install

Gruß
Jürgen
 

Neue Themen


Zurück
Oben