# .jar Datei von jedem Computer ausführen?



## Bluefire (5. Jun 2009)

Hi,

Ich habe jetzt seit ein paar Wochen Java mit Eclipse und hab auch schon die ersten Programme programmiert. 
Jetzt mein Problem:
Wenn ich ein Programm fertig habe, kann ich es erst mal nur mit der F11-Taste starten. Mein Ziel war es das Programm mit einem Doppelklick zu starten. Also hab ich ein bisschen gegoogelt und hier ein bisschen gesucht: Ich hab dann von der .jar Datei erfahren, mit der ich das Programm dann bei mir auch (per Doppelklick) ausführen kann. Leider geht das auch nur bei mir. Bei anderen Computern konnte es nicht geöffnet werden. Habe dann erfahren, dass trotzdem noch Java (mehr oder weniger) installiert sein muss.
Jetzt meine Frage:
Was kann/muss ich tun, damit das Programm von jedem Computer (ohne Java) ausgefürht werden kann?

Würde mich über Antworten freuen

mfg
Bluefire


----------



## maki (5. Jun 2009)

Unsere FAQ hat dazu einiges:
http://www.java-forum.org/java-faq-beitraege/13787-java-archive-archiv-erstellen.html
http://www.java-forum.org/java-faq-...ramme-zu-starten-java-archive-bat-exe-cd.html

Solange dir klar ist dass man Java braucht um ein Javaprogramm auszuführen..


----------



## Wildcard (5. Jun 2009)

> Bei anderen Computern konnte es nicht geöffnet werden. Habe dann erfahren, dass trotzdem noch Java (mehr oder weniger) installiert sein muss.


Interessanter ist zu erfahren warum sie nicht gestartet werden konnte (um das rauszufinden auf der Konsole java -jar DeineJar.jar ausführen und ergebnis posten), denn Java ist auf ca. 95% der Desktoprechner installiert.
Höchstwahrscheinlich war es nur eine ältere Java Version, oder so und du hast dein jar mit Java 6 kompiliert.


----------



## Bluefire (5. Jun 2009)

Hi, 
Danke erst mal für die Antworten.

@maki: Die FAQ hab ich mir auch schon angeguckt und das mit der .exe Datei erfahren...; Dann hab ich wieder ein bisschen gegoogelt und auch nach einiger Zeit ein Programm gefunden, mit dem ich .exe Datein, aus meiner .jar Datei, erstellen kann.
Aber mein Problem ist ja, dass ich gerne eine Datei hätte, die ich von jedem Computer aus starten kann (also, auch von Computern, die gar kein Java installiert haben).

@Wildcard: Ich habe die Datei (also die .jar bzw. die .exe Datei) auf einen USB-Stick gespeichert und dann versucht sie von einem anderen Computer zu starten:
Bei der .jar Datei kam eine Meldung, dass es kein Programm gibt, die die Datei öffnen kann (logischerweise, weiß ich jetzt).
Bei der .exe Datei kam eine Fehlermeldung, da stand das "Java. Enviroment. Irgendwas" nicht vorhanden war und deshalb die Datei nicht ausgeführt werden kann. (Die Fehlermeldung verstehe ich aber nicht, weil eigentlich hat doch die .exe Datei nichts meh mir Java zu tun, oder versteh ich das falsch?)
Ja, ich habe meine .jar Datei mit Java 6 kompiliert.

mfg
Bluefire


----------



## tuxedo (5. Jun 2009)

Doof ist es auch, wenn es eine Consolen-Anwendung ohne GUI ist. Da ist Doppelklilck dann für'n a***h 
Aber wenn's auf dem eigenen Rechner geht fehlt entweder Java, oder es ist keine passende Version vorhanden.

- Alex


----------



## Bluefire (5. Jun 2009)

Hi Alex,

Sorry, das ich jetzt noch mal nachfragen muss (aber ich kann halt noch nicht so viele "Programmier-Begriffe"):
Was ist eine Consolen-Anwendung ohne GUI?

Auf meinem Rechner kann ich die .jar Datei mit einem Doppelklick öffnen.
Aber halt auf anderen Rechnern nicht (und auch die .exe Datei läss sich auf anderen Rechnern nicht öffnen). Desahlb möchste ich auch eine Datei, die auf anderen Rechnern ausgeführt werden kann, die kein Java installiert haben. Gibt es da irgendeine Möglichkeit?

mfg
Bluefire

// Ist GUI, wenn ich ein Programm schreibe und es hat dann irgendwas mit einem Fenster zu tun (also mit swing)?


----------



## faetzminator (5. Jun 2009)

maki hat gesagt.:


> http://www.java-forum.org/java-faq-...ramme-zu-starten-java-archive-bat-exe-cd.html



Hier steht alles was du wissen musst


----------



## maki (5. Jun 2009)

> Aber mein Problem ist ja, dass ich gerne eine Datei hätte, die ich von jedem Computer aus starten kann (also, auch von Computern, die gar kein Java installiert haben).


Das geht nicht.

jars kann man von allen Computern starten die das passende Java installiert haben, exe Dateien nur unter Windows.
Mit einer jar bist du besser dran imho.


----------



## L-ectron-X (5. Jun 2009)

Der Vorschlag mit der JRE und dem Programm auf einer CD, so dass man keine JRE installiert haben muss, funktioniert in dieser Variante wirklich nur auf einem Windows PC.
Man könnte auch eine Variante für einen Linux oder einen Mac basteln.
Um für alle Rechner eine Lösung zu haben, müssten für alle Systeme die passenden JREs mit auf die CD. Zum Starten emfpiehlt sich dann eine HTML-Datei mit JavaScript, die eine Auswahl des Betriebssystems bereit stellt.

Ich glaube aber, dass man das komplett mit Java Webstart lösen könnte. Allerdings wird dann eine JRE heruntergeladen und installiert, bevor das Programm ausgeführt werden kann.


----------



## Bluefire (6. Jun 2009)

maki hat gesagt.:


> exe Dateien nur unter Windows.



Ich hab jetzt meine .jar Datei mit dem Programm Xenoage in eine .exe Datei umgewandelt (wie es in der FAQ steht) und es (die .exe Datei) noch mal zu jemanden geschickt, um zu gucken, ob man es dort öffnen/ausführen kann. Aber da kam diese Fehlermeldung:
Jar not found:
Öffnen.jar

Was hab ich falsch gemacht?
Soweit ich das jetzt verstanden habe, lässt sich die .exe Datei doch von allen Windows Computern öffnen.
Die .jar Datei lässt sich von allen Computern öffnen, die Java installiert haben.

Wär schön, wenn mir noch mal jemand helfen könnte

mfg
Bluefire

P.S.: Noch mal danke an alle, die mir jetzt geantwortet/geholfen haben


----------



## L-ectron-X (6. Jun 2009)

Xenoage erstellt keine exe-Datei aus deinem Jar. Sowas kann nur ein Native Code Compiler. Vertreter sind Excelsior Jet oder JSmooth. Nur dann brauchst du keine JRE mit ausliefern. Allerdings hat diese Sache einen Haken. Die Programme sind nur unter Windows ausführbar und sind mindestens 30 MB groß...

Xenoage erzeugt nur eine Starter-Datei, die deine Jar-Datei startet. Das ist eigentlich für DAUs gedacht, die mit dem Umgang mit Jar-Dateien nicht vertraut sind.

Auch hier wäre Java-Webstart die bessere Lösung.


----------



## Bluefire (7. Jun 2009)

Hi,

Also ist Xenoage ein wenig nutzlos für mich .
Ich hab in der FAQ (bei "6 Varianten ein java Programm zu starten") bei Punkt 3.1 noch was gefunden. Da steht, soweit ich es verstanden habe, dass es noch eine einfachere Möglichkeit gibt, indem ich es mit "GCJ" mache:



> Es gibt auch noch eine etwas einfachere Möglichkeit:
> Am ehesten findet man da den GCJ, den Java Compiler aus der GNU Compiler Collection. Mit diesem ist es relativ problemlos möglich Java-Quellcode zu Maschinencode zu kompilieren:


 
Ich denke, dass ich das auch machen kann.
Leider weiß ich jetzt nicht so genau wie.
Was muss ich da jetzt genau runterladen?
Und wo soll ich diesen einen Code eingeben?

Wär schön, wenn mir noch mal jemand helfen könnte.

mfg
Bluefire

P.S.: Ich denke, dass ich das mit Web-Start auch ausprobieren werde, dass ich dann ma Ende mal alles mehr oder weniger gemacht/ausprobiert habe.

// Warum sind eigentlich irgendwelche Programme, die ich aus dem Internet runterladen kann nur ein paar MB groß? Ich denke, die können doch auch mit Java geschrieben sein... und laufen auf jedem Rechner. Wie wurden die denn Compiliert?


----------



## Bluefire (7. Jun 2009)

Hi,

kann hier mal irgendjemand den Link zu der GNU Version 4.3.3 posten?
Irgendwie finde ich mich auf deren Homepage einfach nicht zurecht...
Ich komm da zwar auf so'ne Mirror Site (wo man es eigentlich runterladen soll), aber ich finde da einfach kein Download -Link/Button/etc....

Wäre dankbar, wenn jemand den Link posten könnte.

mfg
Bluefire


----------



## Antoras (7. Jun 2009)

Es macht keinen Sinn Java-Sourcecode in nativen Code umzuwandeln. Java wurde darauf ausgelegt Plattformunabhängig zu sein und da bringt einem Maschinencode herzlich wenig. Sonst könntest ja gleich mit C oder einer anderen Sprache programmieren, die programmabhängigen Code erzeugt.



> kann hier mal irgendjemand den Link zu der GNU Version 4.3.3 posten?


Was du meinst ist nicht GNU, sondern GCC, der ist aber eher etwas für Linux...



> P.S.: Ich denke, dass ich das mit Web-Start auch ausprobieren werde, dass ich dann ma Ende mal alles mehr oder weniger gemacht/ausprobiert habe.


In fünf Minuten geht das sicherlich nicht. Zumahl du dafür einen Server brauchst, auf dem du deine Applikation hosten kannst.



> // Warum sind eigentlich irgendwelche Programme, die ich aus dem Internet runterladen kann nur ein paar MB groß? Ich denke, die können doch auch mit Java geschrieben sein... und laufen auf jedem Rechner. Wie wurden die denn Compiliert?


Falls die Datei eine Endung wie beispielsweise *jar* oder *jnlp* trägt, dann handelt es sich um eine Java-Applikation. Bei einer *exe* normalerweise nicht. Diese werden normalerweise mit der C-Familie erstellt. Und exe-Archive laufen nicht auf jedem Recher, sondern nur unter Windows. Und die Größe des Programms sagt nichts über darüber aus mit welcher Programmiersprache es erstellt wurde.
Wie oben schon gesagt macht es keinen Sinn mit Java Maschinencode zu erzeugen. Lass den Gedanken lieber links liegen. Und wenn du das nicht kannst, dann lass Java links liegen und geh zu einer anderen Programmiersprache, wie beispielsweise C++.


----------



## Wildcard (8. Jun 2009)

Antoras hat gesagt.:


> Was du meinst ist nicht GNU, sondern GCC, der ist aber eher etwas für Linux...


Dafür gibt es Cygwin und MinGW.





> In fünf Minuten geht das sicherlich nicht. Zumahl du dafür einen Server brauchst, auf dem du deine Applikation hosten kannst.


Server nicht, nur Webspace und 5 Minuten ist nichtmal so unrealistisch da es in der Regel sehr einfach ist eine Applikation Webstartfähig zu machen. Danach braucht man nur noch das passende Java Script um im Notfall eine JRE installieren zu können.




> Falls die Datei eine Endung wie beispielsweise *jar* oder *jnlp* trägt, dann handelt es sich um eine Java-Applikation. Bei einer *exe* normalerweise nicht. Diese werden normalerweise mit der C-Familie erstellt.


Mit C hat das nichts zu tun. Exe ist einfach die Dateiendung für natives Compilat auf Windows Systemen. Viele Programmiersprachen werden nativ kompiliert.


----------



## Bluefire (8. Jun 2009)

Hi,

also nachdem ich mir GNU runtergeladen habe, ist mir auch aufgefallen, dass es eher für Linux ist:autsch:.

Welches Programm ist es denn Besser/Benutzerfreundlicher. Cygwin oder MinGW?
Könnte jemand noch einen Download-Link zu dem jeweiligen Programm mit der aktuellen Version posten? (Ich finde immer nur irgendwelche uralten Versionen)

mfg
Bluefire


----------



## Bluefire (8. Jun 2009)

Hey,

So ich hab jetzt die setup Datei von Cygwin runtergeladen.
Jetzt bin ich bei "Select Packages";
Welche Pakete muss ich auswählen um eine Java Datei in eine .exe Datei umzuwandeln?

mfg
Bluefire

// hab auch noch MinGW runtergeladen und installiert, aber wie kann ich jetzt eine .exe Datei kompilieren?


----------



## Wildcard (8. Jun 2009)

HOWTO Compile with gcj | MinGW


----------



## Bluefire (9. Jun 2009)

Hi,

Irgendwie hab ich das mit MinGW nicht ganz verstanden...
Aber ich hab mir jetzt "launch4j" runtergeladen und installiert (ging alles schnell und einfach und es sieht "relativ" benutzerfreundlich aus...)
So, jetzt hab ich es geöffnet und unter 
"Basic" bei "*Output file:" _Pfad zum Ordner in dem meine .jar Datei liegt_ und bei
"*jar:" _mein Pfad zur .jar Datei_ eingetragen.
Jetzt drücke ich auf das Symbol (Build Wrapper) und es kommt folgende Meldung:
"Specify minimum JRE version and/or bundled JRE path"
Die Übersetzung der Fehlermeldung hilft mir jetzt auch nicht gerade weiter...
Was muss ich tun, damit es geht?

mfg
Bluefire


----------



## Verjigorm (9. Jun 2009)

Wildcard hat gesagt.:


> Interessanter ist zu erfahren warum sie nicht gestartet werden konnte (um das rauszufinden auf der Konsole java -jar DeineJar.jar ausführen und ergebnis posten), denn Java ist auf ca. 95% der Desktoprechner installiert.



Dann arbeite ich wohl AUSSCHLIESSLICH mit den 5% der Kunden, die Java nicht installiert haben ...


----------



## L-ectron-X (9. Jun 2009)

Bluefire hat gesagt.:


> "Specify minimum JRE version and/or bundled JRE path"


Die JRE angeben, die mindestens benötigt wird, damit das Programm funktioniert und/oder den Pfad zur mitgelieferten JRE.
Wie dem auch sei, diese Lösungen sind 1. Krücken und 2. plattformabhängig.


----------



## Wildcard (9. Jun 2009)

Verjigorm hat gesagt.:


> Dann arbeite ich wohl AUSSCHLIESSLICH mit den 5% der Kunden, die Java nicht installiert haben ...



Wahllos aus der ersten Google Treffer Seite herausgegriffen:
David Herron's Blog: Java-in-browser availability
Browser News: Statistics - Trends - learn about trends in browsers, colour-depths, and resolutions
Browser Statistics

Zweimal 87% Java Support, einmal 99%. Bei eignen Statistiken (auf einer nicht-technischen Homepage) komme ich so auf 95%.


----------



## Verjigorm (10. Jun 2009)

Wildcard hat gesagt.:


> Wahllos aus der ersten Google Treffer Seite herausgegriffen:
> David Herron's Blog: Java-in-browser availability
> Browser News: Statistics - Trends - learn about trends in browsers, colour-depths, and resolutions
> Browser Statistics
> ...



Das zweifle ich auch nicht wirklich an, aber das ist bei unseren Kunden leider nicht so.
Die Beschweren sich immer, dass sie Java installieren müssen


----------

