# *.jar >>> *.exe und "heap size"



## MikeMR (18. Mai 2011)

Schönen guten Abend!

Ich suche ein (kostenloses) Programm, welches mir aus einer *.jar Datei eine *.exe Datei generiert wie das zum Beispiel Launch4J macht.

Im Gegensatz zu Launch4J soll es aber möglich sein die "initial/max heap size" der JVM in einer Datei anzugeben, welche in einem von mir bestimmten Verzeichnis liegt (nicht wie bei launch4j, wo die *.l4j.ini - Datei dazu im selben Verzeichnis wie die *.exe Datei liegen muss).

Besten Dank für Tipps und Hinweise!

mfg,
Mike


----------



## TheDarkRose (18. Mai 2011)

Selber ne kleine .exe mit C/C++ proggen


----------



## HoaX (19. Mai 2011)

Lauch4j is doch unter BSD Lizenz. Imo ist es das einfachste dieses anzupassen.


----------



## faetzminator (19. Mai 2011)

Wieso nicht einfach eine Bat-Datei und ein Shell-Script?


----------



## L-ectron-X (19. Mai 2011)

MikeMR hat gesagt.:


> ...soll es aber möglich sein die "initial/max heap size" der JVM in einer Datei anzugeben...


Xenoage JeStart kann genau das. Die Software findet man bspw. auf Sourceforge: Xenoage JEStart | Download Xenoage JEStart software for free at SourceForge.net
Dort gibt es eine Zip-Datei mit den Quellen zum Download. In der Datei befindet sich auch das fertige Programm.


----------



## MikeMR (20. Mai 2011)

L-ectron-X hat gesagt.:


> Xenoage JeStart kann genau das. Die Software findet man bspw. auf Sourceforge: Xenoage JEStart | Download Xenoage JEStart software for free at SourceForge.net
> Dort gibt es eine Zip-Datei mit den Quellen zum Download. In der Datei befindet sich auch das fertige Programm.



Guten Abend!

Danke erstmal für die Antwort und den Link, leider habe ich noch nicht herausgefunden, wie ich eben zum Beispiel eine Datei angeben kann, aus der die Options für die JVM gelesen werden (im speziellen -Xms, -Xmx). Ich kann zwar im Programm "Xenoage JeStart" für das "Umwandeln" der *.jar-Datei in eine *.exe-Datei JVM-Optionen angeben, habe aber nicht herausgefunden, wie ich diese Optionen für eine bereits erstellte .exe-Datei ändern kann.


----------



## L-ectron-X (21. Mai 2011)

Ich kann dir nicht folgen...
Die Größe des zu verwendenden JVM-Speichers kann man nur dem Interpreter beim Start des Programms vorgeben. Wieso willst du einer exe-Datei die Größe des VM-Speichers vorgeben. Eine exe-Datei läuft doch außerhalb der VM.

Ich habe dich so verstanden, dass du beim Start eines Java-Programms über eine exe-Datei (Wrapper oder Starter) die Größe des VM-Speichers setzen möchtest. Das geht in der VM-Options-Zeile von Jestart.
Genauso gut könntest du eine Batch-Datei benuzen, hast dann aber kein Icon im Startsymbol.


----------



## MikeMR (21. Mai 2011)

Wiederum besten Dank für die Antwort.

Um mir zu folgen:
Wenn man eben zum Beispiel mit dem Programm Launch4J aus einer *.jar-Datei eine Datei mit Namen xyz.exe generiert, welche nicht nur eine vorhandene *.jar-Datei aufruft, sondern eben wirklich selbstständig läuft, kann man in einer Datei mit dem Namen xyz.l4j.ini sehr wohl Optionen (meiner Meinung nach für die JVM?) angeben.
In dieser Datei steht dann eben zum Beispiel:
---------------------------------------------
# Optional Runtime parameters
-Xms4096m
-Xmx4096m
---------------------------------------------

Alles was ich gerne hätte wäre, dass es eben nicht die Datei xyz.l4j.ini sein muss, sondern eine Datei in einem von mir gewählten Ordner mit einem von mir gewählten Namen, in der eben diese Parameter stehen.

Ich hoffe mein Problem ist nun klarer. Auf alle Fälle freue ich mich sehr, dass hier wirklich versucht wird, mir kompetent zu helfen 

Beste Grüße,
Mike


----------



## L-ectron-X (22. Mai 2011)

Verstehe. Das ist mit einem Tool alleine, so weit ich die jetzt kenne, nicht möglich. Dafür brauchst du eigentlich auch keins.
Aber es geht trotzdem.
Schreibe dir ein kleines Java-Programm "x", welches deine Start-Parameter aus deiner Wunschdatei ausliest.
Dieses Java-Programm startet dann einen neuen Interpreter und übergibt ihm dann das auszuführende Programm "y" mit seinen, von Programm "x" ausgelesenen Startparametern.
Da das Programm "x" nichts weiter zu tun hat, wird es von der ersten VM beendet, und es läuft nur noch Programm "y" in der zweiten VM.
Das Ganze ist dann auch wieder Plattform unabhängig.

Edit: Habe eben noch einen Thread gefunden, in dem etwas Ähnliches behandelt wurde:
http://www.java-forum.org/allgemeine-java-themen/100341-java-heapspace-erhoehen-xmx-xms.html


----------



## faetzminator (22. Mai 2011)

Oder noch besser, das Programm startet sich mit gesetzten -Xmx, -Xms, den Parametern und einem Indikator, dass nun der Speicher ok ist. -> Ein weiterer Parameter, kann ja irgendwie -fixMem sein, dann kann der Benutzer die Funktion - wenn unerwünscht - deaktivieren.


----------



## MikeMR (1. Jun 2011)

HoaX hat gesagt.:


> Lauch4j is doch unter BSD Lizenz. Imo ist es das einfachste dieses anzupassen.



Danke wiedermal!
Ihr habt mir alle schon sehr viel weitergeholfen.

Ich versuche gerade Launch4j anzupassen. Habe aber diesbezüglich leider wenig Erfahrung. Mittlerweile habe ich herausgefunden, dass ich in der Datei "head.c" die Datei angeben kann, aus der die Parameter ausgelesen werden. Ich habe es jedoch noch nicht geschafft, diese Datei mit zu compilieren. Wie kann ich das erreichen? Muss ich dazu einen C-Compiler im Eclipse installieren bzw. dachte ich, dass Launch4j ja eigentlich in Java ist...

Besten Dank für jede weitere Hilfe!


----------



## Gastredner (2. Jun 2011)

Cygwin oder MinGW beinhalten auch einen C-Compiler. Mehr Informationen zum Kompiliervorgang findest du auf deren Seiten bzw. beliebigen C-Tutorials.


----------

