# Jar erzeugen und Java in Exe umwandeln?



## donner92 (5. Jun 2010)

Hi,

ich hab mir ein Programm erstellt uns war die P-Q Formel für mathe  Möchte gerne diese .java in eine .exe Datei umwadeln in welches ich dann die Variablen eingebe und diese dann dementsprechend die Lösung ausrechnet und ausgibt(x1, x2). 

Mit freundlichen Grüßen


----------



## Ruzmanz (5. Jun 2010)

Siehe: http://www.java-forum.org/spezialthemen/18384-6-varianten-java-programme-starten-jar-bat-exe-cd.html



> Datei umwadeln in welches ich dann die Variablen eingebe und diese dann dementsprechend die Lösung ausrechnet und ausgibt(x1, x2).



Dafür bräuchtest du dann eine GUI, eine Datei oder die Konsole. So einfach geht das nicht.


----------



## Landei (5. Jun 2010)

Da frage ich mich immer: *Warum?* Was ist so falsch an einem selbstausführbaren Jar, das dann sogar auf Linux oder MacOS funktioniert, oder an Webstart? Für deine drei Zeilen ein komplettes Java beizulegen ist wohl Overkill, also muss der Nutzer sowieso Java installiert haben.


----------



## donner92 (5. Jun 2010)

@ Landei

Bin ein Anfänger und ich finde es nicht sehr schlimm erstma sowas an drei Zeilen zu versuchen, trotzdem danke für deinen Beitrag.

@Ruzmanz

hätte jetzt nur noch ein problem mit dem Batch Tool: Main-Class

echo Main-Class: MeinPackage.MeineKlasse>>manifest.mf

was soll ich da eingeben 

--> Meinung geändert erstma versuchen jar - Dateien zu erstellen und dann eine exe


----------



## icarus2 (5. Jun 2010)

Ich erstelle Jars immer mit Hilfe von Eclipse... da ist einfach genug für mich ^^

Hier ist aber noch ein nützlicher Link in der FAQ, der vieles erklärt:
6 Varianten Java-Progamme zu starten


----------



## donner92 (5. Jun 2010)

ja da bin ich ja gerade  wollte mithilfe des Batch-Tools diese jar datei erstellen, weiss aber nicht was ich unter main-Class schreiben soll...

welches Programm von eclipse benutzt du denn?


----------



## Java-Freak (5. Jun 2010)

hää, wie welches programm?
du musst im ganz normalen eclipse im dateimenü auf "Export"(in dt warsch. Exportieren) klicken, dann eine main class auswählen und dann auf ok drücken


----------



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

Er meint die Batchdatei aus der FAQ: http://www.java-forum.org/spezialthemen/13787-jar-archiv-erstellen.html#post99600

Main-Class ist die Klasse, in der die main()-Methode steht, also die Klasse, die deine Anwendung startet.
Wenn du ein Package angelegt hast, in welchem du dann deine Klasse gespeichert hast, musst du zusätzlich auch noch dieses Package angeben. Ansonsten genügt es, wenn du dort die Main-Class notierst.


----------



## donner92 (5. Jun 2010)

L-ectron ich weiss nicht was du damit

echo Main-Class: MeinPackage.MeineKlasse>>manifest.mf

meinst.. Das programgerüst ist das schlichte 
public class dateinamme
{
public static void main(String args[])
{
.
.
.
}
}

gespeichert auf dem Desktop dateinamme.java, dateinamme.class


----------



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

Dann muss diese Zeile so aussehen:

```
echo Main-Class: dateiname>>manifest.mf
```

BTW: wird der Anfangsbuchstabe eines Klassennamen groß geschrieben.


----------



## Java-Freak (5. Jun 2010)

in der jar datei gibt es (immer) eine Datei mit dem namen manifest.mf, in der steht welche .class datei bei start der .jar datei aufgerufen wird 
das sieht so aus wie L-ectron-X es dir gezeigt hat
Manifest-Version: 1.0
Main-Class: beispiel.package.fuer.dich.Dateiname
edit: zu langsam 
ich glaub ich habe die frage nicht verstanden^^


----------



## donner92 (5. Jun 2010)

ook, sry ich weiss ich hab eig. keine ahnung 

so siehts nun aus, funktioniert aber noch nicht soo ganz:


```
[...]

set path=.;C:\Program Files (x86)\Java\jdk1.6.0_20\bin

rem * Manifestdatei vorbereiten und erzeugen.
echo Manifest-Version: 1.0>manifest.mf 

rem --> anpassen!
rem * Bitte ClassPath hier angeben! Der Class-Path enthält eine Auflistung externer Jar-Dateien (optional)
rem * Beispiel: Class-Path: ./lib/h2.jar ./lib/icons.jar
echo Class-Path: .>>manifest.mf 

rem --> anpassen!
rem * Bitte Main-Class hier angeben!
echo Main-Class: deteiname>>manifest.mf
echo.>>manifest.mf

if exist *.class goto create

rem * Kompilieren, falls noch nicht geschehen.
:compile
if not exist *.java goto errorjava
javac -O *.java

rem * Jar-Datei erzeugen.
:create
if not exist *.class goto errorjar
rem --> anpassen!
rem * Bitte Name der zu erstellenden jar-Datei hier angeben!
rem * Beispiel: jar cfvm ArchivName.jar manifest.mf *.class images sounds
rem * fügt ein Manifest, alle class-Dateien und die Verzeichnisse images und sounds in ArchivName.jar ein.
jar cfvm dateiname2.jar manifest.mf dateiname

[...]
```

wen ich es starte steht dann da:
dateiname: Datei oder Verzeichniss existiert nicht.

:-/ soo


----------



## icarus2 (5. Jun 2010)

donner92 hat gesagt.:


> ja da bin ich ja gerade  wollte mithilfe des Batch-Tools diese jar datei erstellen, weiss aber nicht was ich unter main-Class schreiben soll...
> 
> welches Programm von eclipse benutzt du denn?



Das ist bereits in Eclipse integriert, dafür braucht man kein spezielles Programm:
Fille ==> Export ==> Java ==> Runnable JAR file


----------



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

icarus2 hat gesagt.:


> Das ist bereits in Eclipse integriert, dafür braucht man kein spezielles Programm:


Eben, dafür braucht man kein Eclipse, es geht auch auf der Konsole.  :bae:
Übrigens kann das nicht nur Eclipse... Ich finde es immer nervig, wenn jemand anführt, Eclipse könne dies, Eclipse könne das...
Er ist Einsteiger, normalerweise sollte man die Sachen noch zu Fuß erledigen, damit man versteht, was passiert.

Zum Thema:


			
				donner92 hat gesagt.:
			
		

> ```
> echo Main-Class: deteiname>>manifest.mf
> ```


Prüfe noch mal die Angabe des Namens deiner Klasse!

Setze mal die Zeile so, falls es nicht funktionieren sollte:

```
set path=.;"C:\Program Files (x86)\Java\jdk1.6.0_20\bin"
```

Probleme könnten die Leerzeichen im Pfad machen.


----------



## donner92 (5. Jun 2010)

hmm nein keine raktion, namen sind auch alle ok ???:L:bahnhof:;(

könnten auch importierte dateien zu fehlern führen? importiere z.b. StdInput :rtfm:


----------



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

Liegt die Batchdatei in dem Verzeichnis, in dem auch deine .class-Datei liegt?

Lässt sich deine Klasse fehlerfrei kompilieren?
Schreib mal sämtliche komplette Fehlermeldungen.


----------



## donner92 (5. Jun 2010)

jap alles liegt auf dem desktop, programm lässt sich fehlerfrei compalieren und ausführen(geschrieben und Compaliert mit TextPad). Installierte Java versionen JDK 6 upd.20 und Java normal 6 upd.20, benutze Windows 7 Pro 64-Bit. Nach ausführen von JarBatch.bat steht in der Console :
JarBatch - erzeugen von jar-Dateine

dateiname: Datei oder Verzeichnis existiert nicht.
Manifest wurde Hinzugefügt.
Entsprechende Dateien wurden dem jar-Archiv hinzugefügt.

Drücken Sie eine beliebige Taste . . .



achso und er erstellt dateiname2.jar, aber nach dem doppelklick dadrauf pasiert nichts


----------



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

donner92 hat gesagt.:


> jdateiname: Datei oder Verzeichnis existiert nicht.


Hmmm, sorry. Mein Fehler. Ich habe oben einen Fehler von dir übersehen.

Die Zeile muss so aussehen:

```
jar cfvm dateiname2.jar manifest.mf dateiname.class
```
Die Dateiendung der Klasse fehlt in deiner Angabe.

Falls du in deiner Klasse keine GUI anzeigen lässt, wird beim Start per Doppelklick auch nichts angezeigt werden. Jar-Dateien sind standardmäßig mit _javaw_ verknüpft, so dass Konsolenprogramme keine Ausgabe haben.
Der Konsolen-Aufruf in diesem Fall muss dann lauten: 
	
	
	
	





```
java -jar DeineJardatei.jar
```

Nur Jar-Dateien mit denen eine GUI angezeigt wird, kannst du per Doppelklick starten und etwas Sichtbares entlocken.


----------



## donner92 (5. Jun 2010)

alles sehr schön, keine Fehlermeldung mehr, bleibt aber nur noch eine dumme anfängerfrage  wenn ich mithilfe der cmd die datei öffne wie du es gesagt hast steht dann da der Befehl "java" ist entweder falsch geschrieben oder konnte nicht gefunden werden...

die cmd starte ich mithilfe einer bat datei so ist sie gleich auf den desktop ausgerichtet :-/


----------



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

Dann stimmt der Pfad zur JRE nicht.

Zeig mal, was du da jetzt gemacht hast.


----------



## donner92 (5. Jun 2010)

C:\Users\geheim\Desktop>java -jar dateiname2.jar


----------



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

Wenn du die path-Umgebungsariable nicht modifiziert hast (und davon gehe ich aus)
musst du noch den Pfad zum JDK/JRE bekannt machen:


```
set path=.;"C:\Program Files (x86)\Java\jdk1.6.0_20\bin"
java -jar dateiname2.jar
```

Sollte das nicht funktionieren, kannst du auch einen Direktaufruf versuchen:

```
"C:\Program Files (x86)\Java\jdk1.6.0_20\bin\java" -jar dateiname2.jar
```


----------



## donner92 (5. Jun 2010)

Vielen Dank, funktioniert endlich  nun werd ich mich mit dem GUI befassen, vielen Dank nochma...


----------

