Java Java --> EXE inkl. Laufzeitumgebung

Ghost_Rider_R

Lieutenant
Registriert
Nov. 2009
Beiträge
759
Hallo miteinander,

wie kann ich am einfachsten aus einer *.JAR Datei, welche ich erstellt habe,eine EXE machen,
welche eine Laufzeitumgebung bereits enthält?

und das ganze sollte noch obendrauf ohne Installation von diversen Softwarepaketen möglich sein, da ich die EXE auf mehreren Windows Systeme zum laufen bringen möchte.

Ich hab da zwar schon 1 / 2 Tools getestet, jedoch brauchen beide zuvor eine Laufzeitumgebung,
was für mich dann keinen sinn mehr macht, da ich dann gleich eine JVM installieren kann.

Es soll also komplett unabhängig sein, einfach die Exe anklicken uns Sie soll das machen, was die
Jar machen würde. Das ganze wenn so schlank wie möglich.


Gibts da was? ich möchte mir nur ungern eine neue Programmiersprache aneignen, da ich in
Java alles machen kann, was ich für mich benötige.

Viele Grüße
Ruff
 
ehrliche Antwort:
Das macht man nicht.

Um das Programm trotzdem zu starten schreibt man eine einzeilige .sh oder .bat Datei.
Dann startet das Programm auch mit einem Doppelclick.

Wenn es einen stört das die Endung der Datei .sh/.bat und nicht .exe ist, dann kann man auch Programme wie JEStart oder Launch4J nehmen.

Die JVM muss natürlich immer installiert sein.
Wieso sollte man diese auch nicht installieren?
 
Theoretisch gibt es die Möglichkeit, mit Java to Native Code Compilern, die es wohl tatsächlich geben soll, reinen Binärcode zu erzeugen, der dann lauffähig ist. Das Problem ist aber, dass das Binary immernoch ein paar Libs braucht, die man schwer ohne JVM finden wird.

http://lists.apple.com/archives/java-dev/2001/Feb/msg00708.html
 
Ich bin kein Javamann, also bitte nicht schlagen, aber GCJ kann doch nativen Code erzeugen. Ist der so ein obskurer Compiler?
 
Auch, man kann mit GCJ sowohl Bytecode für die VM als auch Native Code erzeugen, ich hab aber mit Native Code Erzeugung aus Java keine eigene Erfahrung.
 
...das Problem ist einfach folgendes, dass ich gerne ein Programm auf mehreren Rechner einsetzen möchte.
Jedoch möchte ich nicht überall eine JVM installieren bzw. den Anwendern zumuten dies selber zu tun.

Daher wäre es einfach eine elegante Lösung eine unabhängige EXE zu erstellen welche alles benötigte beinhaltet.

Das muss doch heutzutage irgendwie möglich sein :freak:
 
Killkrog: Das .NET-Framework ist doch mittlerweile Teil von Windows. Wenn man eine vernünftige Grenze bei "alles mitliefern, was man braucht" zieht, die das Betriebssystem nicht beinhaltet, wäre C# auf jeden Fall möglich.
 
Klar, wenn man sich auf den Funktionsumfang einer bestimmten Version beschränkt, ist das möglich. Kommt natürlich auch drauf an, ob auf allen Rechnern, die der Threadersteller "bedienen" will, die selbe Version von Windows installiert ist. Sonst muss man schon recht weit zurück gehen in der .Net Version.
 
Das ist bei nativen Anwendungen doch nicht anders. Die Win32-Api wurde ständig erweitert und wenn man für die letzten zwei Monate seiner Lebenszeit noch XP unterstützen will, muss man sich auch da auf die Funktionen beschränken, die das Betriebssystem anbietet. Und im Gegensatz zum .NET Framework, kann man keine neuere Win32-Api nachinstallieren.
 
...entgegen mancher Meinungen gibt es doch einen Workaround um das Problem zu lösen :lol:

man nehme eine fertige .JAR und das Programm launch4j.

Anschließend kopiert man aus dem java Installationsordner die jvm/bin und jvm/lib in ein Unterverzeichnis
der JAR Datei und verlinkt in launch4j per relativer Pfadangabe auf die rauskopierten Ordner.

Also:

*.jar --> jvm --> bin
-->lib

Dann läuft alles einfach per Doppelklick auf dem anderen Rechner, auch wenn keine JVM installiert
ist. Diese steht nun immer dem Programm zur Verfügung.

Einziger Nachteil:

Die Programme haben in der Regel mindestens 120MB, da knapp 119MB auf die JVM zurück zu führen
sind.

Mein Problem konnte es so lösen, vielleicht hilft es dem ein oder anderen ja auch weiter

grüße Ruff :)
 
...der Tipp mit dem mitgeben der JVM kam aber nicht. Und das ist das große Geheinis für mich :-)
Ergänzung ()

...dennoch bräuchte ich noch einmal bitte eure Hilfe:

Unbenannt.JPG


Was steht da genau. bzw was meint der Damit?

Da reicht mein Englisch leider nicht mehr ganz :(
 
...das hab ich glaube ich auch so verstanden. *.JAR sind wohl Archive, welche man entpacken kann, ein paar rauswerfen kann und wieder neu packen kann. Damit kann man relativ schnell die Archivgröße halbieren...

so ist man dann ohne große Arebeit statt bei 120MB nur noch bei ca. 30MB. Wobei man mit etwas Arbeit sicher noch mehr einsparen kann...
 
Das geht mit tools, aber die .exe wird über 100mb groß wenn dein Programm in Java nur 1KB groß ist.
Da wird die komplette JRE reingepackt...

.jar sind die .exe files von java, man kann sie auch per doppeklick ausführen, wenn auf dem rechner JRE etc. korrekt installiert ist. in eclipse kann man direkt nach .jar exportieren.
JRE ist halt nötig wie die die runtimes für C/C++/C# etc.

du kannst allerdings auch die JRE Ordner samt der .jar mit winzip etc. packen und per bat datei die .jar starten.
im JRE ordner ist eine java.exe. in eine batch datei schreibst einfach c:\jre\java.exe -jar bla.jar
 
Zuletzt bearbeitet:
black90 schrieb:
Das geht mit tools, aber die .exe wird über 100mb groß wenn dein Programm in Java nur 1KB groß ist.
Da wird die komplette JRE reingepackt...

.jar sind die .exe files von java, man kann sie auch per doppeklick ausführen, wenn auf dem rechner JRE etc. korrekt installiert ist. in eclipse kann man direkt nach .jar exportieren.
JRE ist halt nötig wie die die runtimes für C/C++/C# etc.

du kannst allerdings auch die JRE Ordner samt der .jar mit winzip etc. packen und per bat datei die .jar starten.
im JRE ordner ist eine java.exe. in eine batch datei schreibst einfach c:\jre\java.exe -jar bla.jar

....hmmm das ist ja grad der Witz an der Sache. Man kann das ganze so weit zerdröseln, dass man mit wenig!
aufwand eine komplett lauffähige EXE erhält bei ca. 30MB. Mit mehr fummelarbeit sol´s wohl sogar bis auf 10MB
runter gehen... Mit der kompletten JRE sinds dann über 100MB, aber man braucht ja in der Regel nicht alles
was JRE zu bieten hat...
 
Dennoch würde ich sowas nicht tun. Du kannst unmöglich 100% sagen was nötig ist und was nicht ;)
 
...das mag schon sein. Aber wenn die Anwendung durch probieren zu 99.9% stabil läuft und anstatt 120MB nur noch 10-30MB braucht, dann sind die meisten sicherlich zufrieden. Sollten doch Probleme auftreten, dann weiß man ja, wo man mit dem suchen anfangen kann :D
 
Zurück
Oben