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
 

KonradN

Super-Moderator
Mitarbeiter
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.
 

Juelin

Bekanntes Mitglied
Danke Konrad,
gibt es da eine noch etwas genauere Beschreibung?
Also Schritt für Schritt was man tun muss.
Gruß
Jürgen
 

KonradN

Super-Moderator
Mitarbeiter
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 :)
 

Juelin

Bekanntes Mitglied
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
 

mihe7

Top Contributor
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
 

Juelin

Bekanntes Mitglied
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
 

KonradN

Super-Moderator
Mitarbeiter
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.
 

mihe7

Top Contributor
@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.
 

Juelin

Bekanntes Mitglied
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
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Juelin run erzeugtes exe file aus javafxmaven AWT, Swing, JavaFX & SWT 31
izoards JTable in CSV File schreiben... AWT, Swing, JavaFX & SWT 23
Ø Ein FXML-File mehrfach einfügen AWT, Swing, JavaFX & SWT 6
MiMa File Dateien im ListView als Name anzeigen? AWT, Swing, JavaFX & SWT 6
Rubberduck JavaFX Runnable jar file doesn't work AWT, Swing, JavaFX & SWT 2
F Output Stream / File Dateien / Speichern AWT, Swing, JavaFX & SWT 13
R FXML File kann nicht hinzugefügt werden! AWT, Swing, JavaFX & SWT 2
S JavaFX Variablen in einem FXML File verwenden AWT, Swing, JavaFX & SWT 8
B JavaFx TreeView mit file system AWT, Swing, JavaFX & SWT 1
J File Sucher AWT, Swing, JavaFX & SWT 4
L JavaFX TreeView mit File Objects AWT, Swing, JavaFX & SWT 0
D Swing JTable mit Inhalt aus XML-File AWT, Swing, JavaFX & SWT 3
Z JAVAFX Stage über Controller weitergeben um css-file zu laden AWT, Swing, JavaFX & SWT 4
M JFX8 Mixed 2D and 3D, Scene Subscene incorrect drawing 3ds-file AWT, Swing, JavaFX & SWT 6
R JavaFX Stage.close() funktioniert nicht im jar-File AWT, Swing, JavaFX & SWT 2
B JAXB , Unmarshal XML File AWT, Swing, JavaFX & SWT 3
T FileFilter: class File wird nicht gefunden AWT, Swing, JavaFX & SWT 2
Guybrush Threepwood Desktop.open(file) hängt AWT, Swing, JavaFX & SWT 4
J SWT jar-File relativ groß AWT, Swing, JavaFX & SWT 5
M JFreeChart in ein File schreiben (bzw. JFrame in ein File Schreiben) AWT, Swing, JavaFX & SWT 2
GUI-Programmer InputStream zu File kopieren - JPrograssbar anzeigen AWT, Swing, JavaFX & SWT 10
C File-Objekte an JList übergeben und abrufen AWT, Swing, JavaFX & SWT 6
Z Component für File-Browser ähnliche Oberfläche AWT, Swing, JavaFX & SWT 6
T SWT Window Builder Pro File Dialog anzeigen AWT, Swing, JavaFX & SWT 10
Z Swing Mittels GUI Werte aus Property-File ändern AWT, Swing, JavaFX & SWT 5
S JTree aus List<File> erstellen AWT, Swing, JavaFX & SWT 8
L Filechooser File Öffnen AWT, Swing, JavaFX & SWT 4
I Swing JTree aus ArrayList<File> erzeugen AWT, Swing, JavaFX & SWT 15
E Swing File lesen und in JEditorpane AWT, Swing, JavaFX & SWT 2
N File.setlastmodified() AWT, Swing, JavaFX & SWT 5
J Progressbar aktualisierung nach file übergabe AWT, Swing, JavaFX & SWT 7
T Dynamic JTree: File System Problem AWT, Swing, JavaFX & SWT 2
freakysheep mit jtree config file erzeugen AWT, Swing, JavaFX & SWT 2
M File-Chooser Problem (2 X Mausklick öffnen) AWT, Swing, JavaFX & SWT 11
N JFilechooser File auslesen AWT, Swing, JavaFX & SWT 10
R Jar File AWT, Swing, JavaFX & SWT 2
M File.listFiles() mit dem FileFilter von JFileChooser? AWT, Swing, JavaFX & SWT 14
I Dateiendung aus File AWT, Swing, JavaFX & SWT 9
A Probleme mit einer JOptionPane in einem jar-File AWT, Swing, JavaFX & SWT 14
G avi-Datei mit Desktop.getDesktop().open(File) öffnen AWT, Swing, JavaFX & SWT 4
DeeDee0815 JEditorPane + HTML + <img src=file> + JAR = FALSE AWT, Swing, JavaFX & SWT 3
E GUI-Elemente aus txt- oder xml-File erstellen? AWT, Swing, JavaFX & SWT 5
F File Chooser - nur PDFs AWT, Swing, JavaFX & SWT 2
C File Explorer simulieren AWT, Swing, JavaFX & SWT 6
B Problem mit ImageIcons in einem Jar-File AWT, Swing, JavaFX & SWT 7
M Windows file icons in Java verwenden AWT, Swing, JavaFX & SWT 2
N JFileChooser => Exc. in thread "Basic L&F File L AWT, Swing, JavaFX & SWT 11
P SkinLF aus jar-File AWT, Swing, JavaFX & SWT 5
C getIcon für ein File das es nicht gibt? AWT, Swing, JavaFX & SWT 2
U externes .jar file einbinden [jdic] AWT, Swing, JavaFX & SWT 16
Z jar-File mit SWT - Exception AWT, Swing, JavaFX & SWT 4
M Ausführbares Jar File AWT, Swing, JavaFX & SWT 12
N File von HDD in JEditorPane laden? AWT, Swing, JavaFX & SWT 2
V SWT Programm als jar-File starten AWT, Swing, JavaFX & SWT 5
P XML-File in Java-App darstellen - wie im Internet Explorer AWT, Swing, JavaFX & SWT 2
D File verschieben. In java möglich? AWT, Swing, JavaFX & SWT 3
J ganz dringend File Chooser: extensions! AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben