Supportnet / Forum / Anwendungen(Java,C++...)
Java-Exe
Frage
Hallo,
ich habe mit JBuilder ein Java-Programm geschrieben. Nun möchte ich aus meiner Klasse eine EXE machen um Sie weiterzugeben. Wie mache ich dies?
Hat jemand eine Idee.
Gruss Eddi
Antwort 1 von semi
Es gibt auch sogenannte "native Compiler", die Java Programme in "gewöhnliche" EXE-Files übersetzen.
Ich habe mal Excelsior JET getestet (http://www.excelsior-usa.com). Nun das Ergebnis war ca. 300KB groß, dazu kamen dann noch drei DLL's mit ÜBER 8 MB. Das war im Prinzip nichts anderes als die komplette VM in DLL's gepackt. Geschwindigkeitsvorteile bringt es bei einem interaktiven Programm kaum.
Vielleicht gibt es welche, die eine bessere Übersetzung liefern. Ich kenne leider keine. (Tower-J, GCJ ???)
Ich würde Dir empfehlen, das ganze in ein JAR-Archiv zu verpacken und dieses über die Manifest Datei ausführbar zu machen.
Sollte jemand doch einen "brauchbaren" Nativcompiler für Java kennen, dann bitte melden.
Gruss,
Michael
Ich habe mal Excelsior JET getestet (http://www.excelsior-usa.com). Nun das Ergebnis war ca. 300KB groß, dazu kamen dann noch drei DLL's mit ÜBER 8 MB. Das war im Prinzip nichts anderes als die komplette VM in DLL's gepackt. Geschwindigkeitsvorteile bringt es bei einem interaktiven Programm kaum.
Vielleicht gibt es welche, die eine bessere Übersetzung liefern. Ich kenne leider keine. (Tower-J, GCJ ???)
Ich würde Dir empfehlen, das ganze in ein JAR-Archiv zu verpacken und dieses über die Manifest Datei ausführbar zu machen.
Sollte jemand doch einen "brauchbaren" Nativcompiler für Java kennen, dann bitte melden.
Gruss,
Michael
Antwort 2 von semi
Hier noch zwei Links, solltest Du es doch mit dem GNU-Compiler versuchen wollen.
GCJ Seite
oder
GNU mirror sites
GCJ Seite
oder
GNU mirror sites
Antwort 3 von Eddi
Hallo semi,
danke erstmal für die Infos.
Habe aber noch ein paar Fragen.
Wenn ich ein JAR-Archiv mit JBuilder erstelle sind zwar meine Icons im Archiv enthalten, werden aber wenn ich das Programm mit java -jar test.jar aufrufe nicht angezeigt. Was mache ich falsch?
Als weiteres, was ist eine Manifest Datei und wie erstelle ich diese? Wird dann die JVM noch benötigt um das Programm auf anderen Rechnern zu starten?
Gruss Eddi
danke erstmal für die Infos.
Habe aber noch ein paar Fragen.
Wenn ich ein JAR-Archiv mit JBuilder erstelle sind zwar meine Icons im Archiv enthalten, werden aber wenn ich das Programm mit java -jar test.jar aufrufe nicht angezeigt. Was mache ich falsch?
Als weiteres, was ist eine Manifest Datei und wie erstelle ich diese? Wird dann die JVM noch benötigt um das Programm auf anderen Rechnern zu starten?
Gruss Eddi
Antwort 4 von semi
Das mit den Icons ist mir etwas unklar.
Meinst Du .ICO Dateien oder irgendetwas, was Du im Programm anzeigst?
Manifest-Datei ist einer Art Beschreibung des gepackten Archivs.
Wenn Du das Archiv entpackst, dann steht das Ding im Unterverzeichnis META-INF.
Man kann dort u.a. die Hauptklasse (also die mit main) angeben.
So könnte es z.B. aussehen (Dateiname: Manifest.mf):
In JBuilder kannst Du beim Erstellen des Archivs eine Manifestdatei angeben.
Die automatisch erzeugte Manifest-Datei enthält, glaube ich, den Eintrag Main-Class: ... nicht. Also lieber selbst angeben.
Die virtuelle Machine (JRE) muss vorhanden sein.
Gruss,
Michael
Meinst Du .ICO Dateien oder irgendetwas, was Du im Programm anzeigst?
Manifest-Datei ist einer Art Beschreibung des gepackten Archivs.
Wenn Du das Archiv entpackst, dann steht das Ding im Unterverzeichnis META-INF.
Man kann dort u.a. die Hauptklasse (also die mit main) angeben.
So könnte es z.B. aussehen (Dateiname: Manifest.mf):
Manifest-Version: 1.0
Main-Class: test.myapp.MyApp
Created-By: John Doe
Das entspricht einer Klasse:
package test.myapp;
public class MyApp {
public static void main(String argv[]) {
...
...usw.
In JBuilder kannst Du beim Erstellen des Archivs eine Manifestdatei angeben.
Die automatisch erzeugte Manifest-Datei enthält, glaube ich, den Eintrag Main-Class: ... nicht. Also lieber selbst angeben.
Die virtuelle Machine (JRE) muss vorhanden sein.
Gruss,
Michael
Antwort 5 von Eddi
Hallo Michael,
hab jetzt erst mal alles getestet, und es hat auch alles geklappt. Das mit den Icons (gifs für die Buttons) hab ich rausbekommen, ich musste sie nicht mit ins JAR-Archiv packen, sondern sie bloss ins selbe Verzeichnis kopieren damit sie im Programm angezeigt werden.
Es ist nur noch eine Sache, wenn ich mein Java-Programm mit einer BATCH starte bleibt das DOS-Fenster geöffnet, ist es möglich dieses zu schliessen wenn die Application gestartet ist?
Gruss Eddi
hab jetzt erst mal alles getestet, und es hat auch alles geklappt. Das mit den Icons (gifs für die Buttons) hab ich rausbekommen, ich musste sie nicht mit ins JAR-Archiv packen, sondern sie bloss ins selbe Verzeichnis kopieren damit sie im Programm angezeigt werden.
Es ist nur noch eine Sache, wenn ich mein Java-Programm mit einer BATCH starte bleibt das DOS-Fenster geöffnet, ist es möglich dieses zu schliessen wenn die Application gestartet ist?
Gruss Eddi
Antwort 6 von semi
Ich nehme an, dass es Dir um die Ausführung unter Windows geht.
Beachte, dass überall javaw und nicht java steht. java.exe ist die Console-Version (DOS-Fenster), javaw.exe ist eine Windoof-Version und läuft ohne DOS-Fenster.
Ich würde die dritte Variante mit dem Link bevorzugen.
Übrigens. Deine Icons können ruhig in dem Archiv stehen. Das ist eigentlich der Sinn und Zweck JAR's einzusetzen.
Alles was zusammengehört, sollte auch zusammen bleiben.
Es liegt wahrscheinlich daran, dass die Grafikdateien falsch gepackt sind. In irgendeinem Unterverzeichnis.
Gruss,
Michael
- In Batchdatei (siehe start /? )
@echo off start javaw -jar myApp.jar - Windows Scripting Host (*.vbs Datei)
set shell = wscript.CreateObject("WScript.Shell") shell.Run "javaw -jar myApp.jar" - Einfachen Link erstellen (*.lnk)
Ziel: javaw.exe -jar myApp.jar
Arbeitsverzeichnis: wo auch immer es steht.
Beachte, dass überall javaw und nicht java steht. java.exe ist die Console-Version (DOS-Fenster), javaw.exe ist eine Windoof-Version und läuft ohne DOS-Fenster.
Ich würde die dritte Variante mit dem Link bevorzugen.
Übrigens. Deine Icons können ruhig in dem Archiv stehen. Das ist eigentlich der Sinn und Zweck JAR's einzusetzen.
Alles was zusammengehört, sollte auch zusammen bleiben.
Es liegt wahrscheinlich daran, dass die Grafikdateien falsch gepackt sind. In irgendeinem Unterverzeichnis.
Gruss,
Michael
Antwort 7 von semi
Ich nehme an, dass es Dir um die Ausführung unter Windows geht.
Beachte, dass überall javaw und nicht java steht. java.exe ist die Console-Version (DOS-Fenster), javaw.exe ist eine Windoof-Version und läuft ohne DOS-Fenster.
Ich würde die dritte Variante mit dem Link bevorzugen.
Übrigens. Deine Icons können ruhig in dem Archiv stehen. Das ist eigentlich der Sinn und Zweck JAR's einzusetzen.
Alles was zusammengehört, sollte auch zusammen bleiben.
Es liegt wahrscheinlich daran, dass die Grafikdateien falsch gepackt sind. In irgendeinem Unterverzeichnis.
Gruss,
Michael
- In Batchdatei (siehe start /? )
@echo off start javaw -jar myApp.jar - Windows Scripting Host (*.vbs Datei)
set shell = wscript.CreateObject("WScript.Shell") shell.Run "javaw -jar myApp.jar" - Einfachen Link erstellen (*.lnk)
Ziel: javaw.exe -jar myApp.jar
Arbeitsverzeichnis: wo auch immer es steht.
Beachte, dass überall javaw und nicht java steht. java.exe ist die Console-Version (DOS-Fenster), javaw.exe ist eine Windoof-Version und läuft ohne DOS-Fenster.
Ich würde die dritte Variante mit dem Link bevorzugen.
Übrigens. Deine Icons können ruhig in dem Archiv stehen. Das ist eigentlich der Sinn und Zweck JAR's einzusetzen.
Alles was zusammengehört, sollte auch zusammen bleiben.
Es liegt wahrscheinlich daran, dass die Grafikdateien falsch gepackt sind. In irgendeinem Unterverzeichnis.
Gruss,
Michael
Antwort 8 von Eddi
Hallo Michael,
hab dies getestet und es Funktioniert alles.
Vielen Dank für deine Infos.
Gruss Eddi
hab dies getestet und es Funktioniert alles.
Vielen Dank für deine Infos.
Gruss Eddi
Antwort 9 von RMC
hi!
ich wollte amal genau dasselbe machen (ebenfalls exe aus java-files erstellen, ebenfalls mit dem jbuilder)
nur wie mach ich aus den .java oder .class files ein .jar archiv???
und das mit der manifest-datei was ihr da oben gschriebn habts hab ich auch nicht ganz kapiert.. :-/
plz schauts mal obs ihr mir das erklärn könnts
thx, RMC
ich wollte amal genau dasselbe machen (ebenfalls exe aus java-files erstellen, ebenfalls mit dem jbuilder)
nur wie mach ich aus den .java oder .class files ein .jar archiv???
und das mit der manifest-datei was ihr da oben gschriebn habts hab ich auch nicht ganz kapiert.. :-/
plz schauts mal obs ihr mir das erklärn könnts
thx, RMC
Antwort 10 von semi
1) Zu JAR (mit JBuilder):
Datei->Neu->Archive Builder
Wähle als Archivtyp: Application bzw. Anwendung
Rest sollte klar sein.
Die Manifestdatei wird automatisch erzeugt, wenn Du bereits die Klasse mit der Funktion main eingestellt hast.
Gruss,
Michael
Datei->Neu->Archive Builder
Wähle als Archivtyp: Application bzw. Anwendung
Rest sollte klar sein.
Die Manifestdatei wird automatisch erzeugt, wenn Du bereits die Klasse mit der Funktion main eingestellt hast.
Gruss,
Michael
Antwort 11 von RMC
jo danke semi, oke soweit alles klar, hab das archiv und die manifest datei..muss ich in der jetzt was eintragen? und wie krieg ich jetzt entgültig eine *.exe? hab das auch mit dem link probiert mit javaw -jar <name>.jar hat aber net ganz hinghaut..
greetz RMC
greetz RMC
Antwort 12 von semi
1) Kopiere die Jar-Datei in irgendein leeres Verzeichnis
2) Öffne das Dosfenster (nicht zu weit :-))
3) Gebe folgendes ein:
jar -xf archivname.jar
4) Schau Dir die Datei MANIFEST.MF im Unterverzeichnis META-INF an
Sie sollte eine Zeile haben, die wie folgt anfängt:
Main-Class: packagename.klasse-mit-main
Wenn dies nicht dabei ist, dann hinzufügen, und erneut packen.
2) Öffne das Dosfenster (nicht zu weit :-))
3) Gebe folgendes ein:
jar -xf archivname.jar
4) Schau Dir die Datei MANIFEST.MF im Unterverzeichnis META-INF an
Sie sollte eine Zeile haben, die wie folgt anfängt:
Main-Class: packagename.klasse-mit-main
Wenn dies nicht dabei ist, dann hinzufügen, und erneut packen.
Antwort 13 von RMC
k soweit passt alles, nur wenn ich das im dos-fenster eingeb krieg ich a fehlermeldung mit dem inhalt "could not initialize the java virtual machine"
..hm und wenn ich javaw -jar <name>.jar macht bei mir gar nix...damn
noch irgendwelche ideen plz? :)
greetz RMC
..hm und wenn ich javaw -jar <name>.jar macht bei mir gar nix...damn
noch irgendwelche ideen plz? :)
greetz RMC
Antwort 14 von semi
Damit kann ich nichts anfangen.
Es kann hundert Gründe haben, warum es nicht geht. Wahrscheinlich hast Du irgendeinen Mix aus mehreren unterschiedlichen Versionen von JRE auf Deinem Rechner oder Du hast etwas gelöscht, was zu JRE gehört.
Deinstallieren und neuinstallieren.
Zusammenfassend setzt sich die Antwort auf Deine Frage zu der Manifest.mf Datei und JAR-Archiven aus Antwort 4 und Antwort 10.
Gruss,
Michael
Es kann hundert Gründe haben, warum es nicht geht. Wahrscheinlich hast Du irgendeinen Mix aus mehreren unterschiedlichen Versionen von JRE auf Deinem Rechner oder Du hast etwas gelöscht, was zu JRE gehört.
Deinstallieren und neuinstallieren.
Zusammenfassend setzt sich die Antwort auf Deine Frage zu der Manifest.mf Datei und JAR-Archiven aus Antwort 4 und Antwort 10.
Gruss,
Michael
Antwort 15 von Progga
Java ist eine der besten (höheren) programmiersprachen die ich kenne und für manche sachen um längen besser als c++ (z.B. bei Windowsfenstern).
Leider gibt es für java keine brauchbaren editoren, wie visual c++ und das ist der einzige, und wie ich finde auch recht gute, grund, warum ich in c++ programmiere. Ich finde java durchaus besser, aber es gibt einfach keine guten builder.
Wenn mir jemand gute java-builder nennen kann, kann er mich gerne e-mailen
thx
Leider gibt es für java keine brauchbaren editoren, wie visual c++ und das ist der einzige, und wie ich finde auch recht gute, grund, warum ich in c++ programmiere. Ich finde java durchaus besser, aber es gibt einfach keine guten builder.
Wenn mir jemand gute java-builder nennen kann, kann er mich gerne e-mailen
thx
Antwort 16 von semi
@Progga
Hier einige IDE's und Entwicklungsverkzeuge, die durchaus mit Visual Studio konkurieren können.
- Together Control Center: Auch für C++, VB, C#, DTD/XML, RDBMS usw. Unterstützt die komplette UML-Entwicklungskette. Momentan das beste, was ich kenne.
- Simplicity for Java: Gerade für Anfänger wunderbar. Jede Menge Wizards zur "automagischen" Codeerzeugung.
- IBM VisualAge: Habe selten Software von IBM gesehen, die schlecht war :-)
- IBM Eclipse: Das Ende von Swing kündigt sich an :-)
- Oracle JDeveloper: no comment
- Borland JBuilder: kennt jeder
uvm.
Gruß,
Michael
Hier einige IDE's und Entwicklungsverkzeuge, die durchaus mit Visual Studio konkurieren können.
- Together Control Center: Auch für C++, VB, C#, DTD/XML, RDBMS usw. Unterstützt die komplette UML-Entwicklungskette. Momentan das beste, was ich kenne.
- Simplicity for Java: Gerade für Anfänger wunderbar. Jede Menge Wizards zur "automagischen" Codeerzeugung.
- IBM VisualAge: Habe selten Software von IBM gesehen, die schlecht war :-)
- IBM Eclipse: Das Ende von Swing kündigt sich an :-)
- Oracle JDeveloper: no comment
- Borland JBuilder: kennt jeder
uvm.
Gruß,
Michael

