exe Datei erstellen

AltesEisen

Mitglied
Hallo liebes Forum,
ich habe ein kleines minesweeper game mit 2 java Dateien und ein paar kleineren Grafiken.
Ich möchte das Programm übertragen in ein windows Exe Format sodass ich keine JVM brauche.

Ich denke Maven könnte mir dabei helfen. Dafür brauche ich jedoch eine bestimmte POM.xml Datei.
Das Programm importiert verschiedene java.awt und javax.swing Elemente und auch ein java.util.Random.
Ich kenne mich nicht so gut aus mit Maven und weiss nicht wie ich diese Elemente in mein Repository laden kann. Soweit ich weiss erzeugt Maven Class Dateien und Tools wie Launch4j benötigen class Dateien für die Umwandlung in Exe.
Liege ich hier richtig? Wie schreibe ich die POM Datei?

Danke für Antworten.
 

KonradN

Super-Moderator
Mitarbeiter
Also mit einem aktuellen Java ist der Weg heutzutage über das Tool JPackage. Du brauchst kein Tool wie Launch4J mehr.

Dazu musst Du aber ein JDK >= 14 verwenden meine ich. Also z.B. die LTS Version Java 17 oder das ganz neue 21 (was auch eine LTS Version ist).

Wie so ein Maven Projekt aussehen könnte, findest Du z.B. unter kneitzel/JavaMavenApp (github.com) - da habe ich mal ein Template für ein entsprechendes Projekt gemacht.

JPackage baut aber nicht wirklich eine EXE. Es gibt zwar eine exe, aber unter dem Strich wird einfach ein JRE mit Deinen Klassen zusammen gepackt und daher hast Du auch eine Verzeichnistruktur und nicht eine einzelne exe.

Die zweite Möglichkeit ist GraalVM. Da wird dann tatsächlich eine EXE erzeugt. Setzt daher auch eine Build Umgebung voraus also Visual Studio mit dem C++ Compiler. Achte genau auf die Version, die benötigt wird - ein zu neues Visual Studio macht Probleme! Das ist in dem Maven Projekt auch entsprechend berücksichtigt.
 

AltesEisen

Mitglied
Hallo liebes Forum. Vielen Dank an Sie, Herr Neitzel.
Also ich habe JPackage ausprobiert und es macht tatsächlich was es soll. Das einzige Problem ist: Der Output Ordner ist mit 147 MB doch sehr groß geraten für dieses kleine Spiel, so kann ich es noch nicht anbieten. Die Frage ist nun, welche Dateien kann ich wegstreichen, die dickeren Brocken sind "runtime/lib/modules" mit 112 MB sowie ct.sym mit 10,7 MB, und "runtime/bin/" mit 21,5 MB.

Vielen Dank für Antworten.
 

KonradN

Super-Moderator
Mitarbeiter
Da ist halt eine Java Runtime dabei. Das dürfte die große Masse ausmachen. Die Alternative GraalVM würde kleinere Ergebnisse liefern.

Etwas reduziert bekommt man es, wenn man die Module richtig einsetzt. Das macht aber nicht so viel aus.
 

White_Fox

Top Contributor
Ich möchte das Programm übertragen in ein windows Exe Format sodass ich keine JVM brauche.
Das dürfte dann das Problem sein. Java besteht immer auf eine JVM, da sie so gesehen Teil des Programms ist.

Gäbe es die JVM nicht, müßte man sich um vieles selber kümmern: Man müßte Speicher vom Betriebssystem selber alloziieren, verwalten und für das Betriebssystem am Ende wieder freigeben. Gerade das Wiederfreigeben hat in der Vergangenheit für allerhand Probleme gesorgt. Wird es nämlich vergessen (und ja, sowas passiert mal) und alloziiert man immer mehr Speicher vom Betriebssystem, belegt man irgendwann allen Speicher selbst und es steht keiner mehr für andere Programme zur Verfügung. Die sogenannten Speicherlecks.

Außerdem kann die JVM noch zur Laufzeit Optimierungen vornehmen, was statisch kompilierte Programme in Sprachen wie C++ von Natur aus nicht können.
Und dann sind da noch jede Menge betriebssystemspezifischer Befindlichkeiten, die die JVM für dich miterschlägt und von denen du nichts merkst.

Die bereits genannten Werkzeuge tun am Ende des Tages auch nichts anderes, als eine JVM mit deinem Programm in einen Container zu packen und .exe dranzuschreiben. Und die wird dann eben entsprechend groß. Ich weiß nicht genau wie GraalVM arbeitet, aber auch das wird sich mindestens um einen Teil der Arbeit der JVM kümmern müssen.
 

AltesEisen

Mitglied
@KonradN: Ich habe versucht GraalVM zu installieren nach offizieller Anleitung mit Umgebungsvariablen etc. Jedoch funktionieren Befehle auf der Kommandozeile nicht: "js -version" sowie "lli --version" werden im bin ordner nicht erkannt.
Für mich als Anfänger scheint sie Sache mit GraalVM sehr komplex zu sein, weil ja sogar hier zusätzlich Maven eingebunden werden muss und C++...
Das Problem ist eben, dass ich hier ein simples minesweeper game habe, die Leute werden misstrauisch bei 147 MB.
Ich bin einigermassen fit in Delphi und werde das Programm wohl eher dann in Delphi realisieren.


@White_Fox: Bitte behalte deine politischen Ansichten für dich !!!
 

White_Fox

Top Contributor
Bitte behalte deine politischen Ansichten für dich !!!
Das ist nur meine Forensignatur...mit der mußt du leben.

Das Problem ist eben, dass ich hier ein simples minesweeper game habe, die Leute werden misstrauisch bei 147 MB.
Ganz ehrlich: Ich kann es zwar nachvollziehen daß man durchaus simple Programme nicht allzusehr aufblasen will, ich persönlich finde das ja auch abartig.
Andererseits: Ich habe hier eine Logitechmaus, und dazu ein kleines Zusatzprogramm von Logitech installiert. Dieses Programm macht (zumindest sehe ich nichts weiter) nicht anderes, als einzublenden ob die Num- und die Capslock-Taste gedrückt wurden. Ansonsten hat es lediglich ein einziges Fenster, das ein Bild der Maus rendert und dazu den Akkustand anzeigt. Ach ja, und es schreibt oben je nach Uhrzeit Guten Morgen, Guten Tag oder Guten Abend.

Das war's, mehr ist da nicht. Der Treiber müßte woanders liegen, wenn nicht sowieso der Standardtreiber verwendet wird.

Der Programmordner frißt dafür 391MB Festplatenspeicher. Öffnet man den, findet man gleich mal acht .exe-Dateien. Dazu auch einige Qt-Dateien (GUI-Framework), was wiederum bedeutet, daß da noch mindestens drei oder vier Threads parallel laufen.

Und das alles für ein Programm, das garantiert weniger kann und weniger macht als deines. Nur mal so im Verlgeich, was "moderne Softwareentwicklung" heute so abliefert, und es stört nur wenige.
 

KonradN

Super-Moderator
Mitarbeiter
Ja, GraalVM erfordert einiges an Installationen aber das ist - so man sich 1:1 an die Beschreibung hält - meist problemlos. Aber jede Abweichung wird gnadenlos bestraft. Also ein aktuelles Visual Studio (Bei Windows) ist durchaus fatal was die Folgen angeht. Da habe ich mir auch schon einmal die Zähne ausgebissen....

Und auch mit der richtigen Visual Studio Version muss man das richtige "cmd" Fenster öffnen. Da hat man ja massiv Auswahl je nach installierten Funktionen....

Wenn du das alles nicht willst, dann kannst Du auch einfach nur eine ausführbare jar Datei erstellen und diese weiter geben. Dann hast Du etwas Kleines, aber dann musst Du halt klar vorgeben, was die Leute installieren sollen.
  • Die Leute müssen eine Java Runtime installieren, die von der Version passt.
  • Damit die jar per Doppelclick gestartet werden kann, muss es richtig konfiguriert sein
  • ...
Das will man eigentlich nicht unterstützen. Aber evtl. machst Du beides - dann kann jeder entscheiden: Will er etwas herunter laden, das dann funktioniert - und eben sonst nichts spezielles braucht ... oder will man paar MB sparen um dann ggf. Probleme mit der Konfiguration zu haben.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Welches SDK für das erstellen einer ausführbaren Datei? Java Basics - Anfänger-Themen 4
J Erstellen einer Datei ohne path Java Basics - Anfänger-Themen 1
Z Erste Schritte Versuche ein Labyrinth in einem Terminal zu erstellen, aber kann die properties Datei nicht einlesen Java Basics - Anfänger-Themen 3
agent47 Input/Output Ordner/Datei Rekutrsiv erstellen und Java Basics - Anfänger-Themen 8
I Ausführbare .jar oder .exe Datei erstellen Java Basics - Anfänger-Themen 4
O Zip Datei erstellen Java Basics - Anfänger-Themen 1
M .jar Datei mit Eclipse erstellen (OpenCV) Java Basics - Anfänger-Themen 2
A Datei im erstelltem Verzeichnis erstellen? Java Basics - Anfänger-Themen 1
G Input/Output CSV-Datei über Java-Programm erstellen, Zeichensalat Java Basics - Anfänger-Themen 3
G Txt datei erstellen Java Basics - Anfänger-Themen 2
Z Java txt Datei erstellen lassen Java Basics - Anfänger-Themen 6
D Datei mit JFileChooser erstellen Java Basics - Anfänger-Themen 5
GadgetSofa .txt Datei erstellen und gleich wieder Löschen? Java Basics - Anfänger-Themen 12
S Ausführbare Datei erstellen Java Basics - Anfänger-Themen 12
H Erste Schritte Datei erstellen Java Basics - Anfänger-Themen 5
S externe Datei erstellen, oeffnen, bearbeiten Java Basics - Anfänger-Themen 2
O Jar Datei erstellen geht nicht. Java Basics - Anfänger-Themen 4
L Erste Schritte Jar-Datei erstellen -? Java Basics - Anfänger-Themen 25
V BlueJ: Funktionierende .jar Datei erstellen Java Basics - Anfänger-Themen 2
H config Datei erstellen + einlesen Java Basics - Anfänger-Themen 15
S jar Datei erstellen mit eclipse Java Basics - Anfänger-Themen 4
E Java Datei erstellen? :) Java Basics - Anfänger-Themen 3
S Datei nicht erstellen Java Basics - Anfänger-Themen 16
S Bin Datei erstellen Java Basics - Anfänger-Themen 12
Maxim6394 .jar Datei erstellen und starten Java Basics - Anfänger-Themen 3
M jar Datei erstellen - Fehler Java Basics - Anfänger-Themen 13
Luk10 Problem beim .jar Datei erstellen Java Basics - Anfänger-Themen 19
N editierbare Datei erstellen Java Basics - Anfänger-Themen 14
B Datei in einem Unterverzeichnis erstellen Java Basics - Anfänger-Themen 10
S Ausführbare datei erstellen Java Basics - Anfänger-Themen 7
A Input/Output Datei automatisch erstellen. Java Basics - Anfänger-Themen 29
W Jar Datei in Eclipse-Projekt erstellen Java Basics - Anfänger-Themen 2
K Komisches Verhalten beim erstellen einer Datei Java Basics - Anfänger-Themen 5
T Erstellen einer .csv-Datei Java Basics - Anfänger-Themen 12
W [Java Archive (JAR) Datei erstellen] Lässt sich nicht ausfürhren Java Basics - Anfänger-Themen 7
C FatJar: Jar-Datei mit jmf.jar erstellen Java Basics - Anfänger-Themen 7
M java neue datei erstellen Java Basics - Anfänger-Themen 6
D Matrix .bat datei erstellen und öffnen Java Basics - Anfänger-Themen 2
Ollek Erstellen einer ausführbaren JAR-Datei mit externen Libaries Java Basics - Anfänger-Themen 9
B JAR Datei mit NetBeans erstellen und ausführen Java Basics - Anfänger-Themen 23
M Datei automatisch erstellen Java Basics - Anfänger-Themen 5
V jar datei erstellen Java Basics - Anfänger-Themen 4
K Eine Datei erstellen Java Basics - Anfänger-Themen 2
B Wie kann ich eine dauerhaft ausführbare Datei erstellen? Java Basics - Anfänger-Themen 6
G JAR Datei richtig erstellen? Java Basics - Anfänger-Themen 2
C Erstellen und Beschreiben einer HTML-Datei Java Basics - Anfänger-Themen 4
Q java.util.loggging neue datei erstellen Java Basics - Anfänger-Themen 3
D neue Datei inkl. Ordner erstellen - in einem Rutsch? Java Basics - Anfänger-Themen 7
S jar-Datei erstellen Java Basics - Anfänger-Themen 3
G JAR Datei mit Eclipse erstellen? Java Basics - Anfänger-Themen 5
T-Yasso CSV Datei erstellen & Strings in die CSV überführen. Java Basics - Anfänger-Themen 3
G Erstellen einer JAR-Datei mit Ant-Scrit schlägt fehl Java Basics - Anfänger-Themen 2
K aus Java Programme Jar.datei erstellen (eclipse) Java Basics - Anfänger-Themen 15
G JAR-Datei in Eclipse erstellen Java Basics - Anfänger-Themen 7
G Log-Datei erstellen Java Basics - Anfänger-Themen 2
G datei im jar-file erstellen Java Basics - Anfänger-Themen 7
S Datei erstellen Java Basics - Anfänger-Themen 4
B bat Datei erstellen und ausführen / keine ausführung Java Basics - Anfänger-Themen 3
M Jar-Datei erstellen Java Basics - Anfänger-Themen 7
A Ausführbare jar-Datei erstellen (mit Eclipse) - main-class? Java Basics - Anfänger-Themen 4
S .class datei erstellen Java Basics - Anfänger-Themen 5
O datei erstellen in jar archiv? Java Basics - Anfänger-Themen 4
J Exe- datei alls Selbständige erstellen Java Basics - Anfänger-Themen 2
P Eclipse: Jar Datei erstellen? Java Basics - Anfänger-Themen 2
F CSV Datei erstellen! Java Basics - Anfänger-Themen 9
S [JBuilder] Class Datei erstellen? Java Basics - Anfänger-Themen 17
M Jar-Datei erstellen Java Basics - Anfänger-Themen 2
A jar.* Datei erstellen. Java Basics - Anfänger-Themen 2
U jar Datei erstellen Java Basics - Anfänger-Themen 20
G Problem beim erstellen einer .jar Datei Java Basics - Anfänger-Themen 9
C Datei größer als 2 GB erstellen Java Basics - Anfänger-Themen 3
D Checksumme für Datei erstellen Java Basics - Anfänger-Themen 4
B Erstellen einer ausführbaren Datei Java Basics - Anfänger-Themen 3
C *.exe Datei erstellen Java Basics - Anfänger-Themen 3
M JAR-Datei mit Eclipse einschließlich SWT erstellen Java Basics - Anfänger-Themen 12
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
E Audio Datei unter Bedingungen ausführen Java Basics - Anfänger-Themen 19
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
J .jar datei öffnen funktioniert nicht Java Basics - Anfänger-Themen 17
P Aus Text Datei nur Zahlen übernehmen Java Basics - Anfänger-Themen 13
W Fehler in der Datei pom.xml Java Basics - Anfänger-Themen 19
M Verständnisfrage: Warum wird die Datei ohne Inhalt übertragen Java Basics - Anfänger-Themen 3
D Jar Datei startet unter Linux nicht Java Basics - Anfänger-Themen 3
P Probleme mit NetBeans: Wie lässt sich jar. Datei an einem MacBook öffnen Java Basics - Anfänger-Themen 21
N Programm Funktioniert mit .txt Datei aber nicht mit .rtf Datei Java Basics - Anfänger-Themen 2
A Wie führe ich eine Batch-Datei von meiner Java-Anwendung aus? Java Basics - Anfänger-Themen 18
D Java Programm mit Batch-Datei starten Java Basics - Anfänger-Themen 32
W Objekte einer ArrayList in txt-datei schreiben mit Paths? Java Basics - Anfänger-Themen 2
E TIF Datei auslesen Java Basics - Anfänger-Themen 2
B von Java/Eclipse verwendete Datei existiert gar nicht? Java Basics - Anfänger-Themen 6
M Spezifischen Wert einer Zeile aus .txt Datei entnehmen Java Basics - Anfänger-Themen 15
B Popups mit Klicksabfangen zumAusfüllen einer .ods Datei Java Basics - Anfänger-Themen 0
M Daten aus .txt Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 80
M RandomAccessFile int und String gleichzeitig in einer Datei Java Basics - Anfänger-Themen 49
I Datei (Bild) Drucken und wie Druckeinstellung speichern? Java Basics - Anfänger-Themen 3
A CSV-Datei Verarbeiten Java Basics - Anfänger-Themen 8
D Downloadfortschritt von Datei über Google Drive API v3 Java Basics - Anfänger-Themen 10
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
B Den Dateipfad einer Java Datei durch Code in Selbiger finden? Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben