# Ausführbare datei erstellen



## Seppel (24. Jun 2011)

Hoffe das Thema passt hier rein. Wie meine Übeeschrift schon sagt möchte ich meine java datei in eine ausführbare datei umwandeln. Dazu belesen habe ich mich schon und ich habe auch schon einige versuche unternommen das ziel zuerreichen, ist aber mißlungen. Hier ist das was ich schon gemacht habe:

Mein Programm ist eine Swing Oberfläche mit folgenden Klassen: (nach dem javac Cronik2.java im Hauptordner vorhanden)
Cronik2$1.class
Cronik2$1ActionJList.class
Cronik2$1CMeinActionLauscher.class
Cronik2$CBildLeinwand.class
Cronik2$CMeineCanvas.class
Cronik2$sucheperson.class
Cronik2.class

konnte mir nicht recht vorstellen was die mf Datei macht, habe sie aber auche rstellt und eingebaut:
"
Manifest-Version: 1.0
Main-Class: Cronik2

"

In der Konsole habe ich folgendes eingegeben und folgende Antwort erhalten:


```
C:\Users\Eric\Desktop\JAVA\Cronik>jar -cfv Cronik2.jar Cronik2mf.txt [Cronik2$1.class][Cronik2$1ActionJList.class][Cronik2$1C
MeinActionLauscher.class][Cronik2$CBildLeinwand.class][Cronik2$CMeineCanvas.class][Cronik2$sucheperson.class][Cronik2.class]
[Cronik2$1.class][Cronik2$1ActionJList.class][Cronik2$1CMeinActionLauscher.class][Cronik2$CBildLeinwand.class][Cronik2$CMeine
Canvas.class][Cronik2$sucheperson.class][Cronik2.class] : Datei oder Verzeichnis existiert nicht.
Manifest wurde hinzugef³gt.
Hinzuf³gen von: Cronik2mf.txt (ein = 44) (aus = 46) (komprimiert -4 %)
```

beim ausführen kommt die folgende Fehlermeldung:

```
Failed to load Main-Class manifest attribute from C:User\Eric\Desktop\java\Cronik\Cronik2.jar
```


Also was mach ich falsch? Hoffe auf eure Hilfe. Übrigens nutze ich nur den Texteditor und möchte das ganze vorerst ohne zusatz Programme erlernen.  (außerdem sollte es Platform unabhänig bleiben)


----------



## bone2 (24. Jun 2011)

Seppel hat gesagt.:


> konnte mir nicht recht vorstellen was die mf Datei macht
> 
> Cronik2mf.txt



und da leigt auch schon dein problem. die datei heißt MANIFEST.MF und liegt im META INF unterordner in der jar.

http://www.java-forum.org/allgemein...uehrbare-jar-bzw-manifest-datei.html#post5438
usw, das thema wurde hier bereits hunderte mal gelöst


----------



## r.w. (24. Jun 2011)

Weitere Infos findest Du auch hier:
http://www.java-forum.org/spezialth...gramme-starten-jar-bat-exe-cd.html#post114602 

VG ROlf


----------



## Seppel (24. Jun 2011)

Ich weis das es schon oft durchgesprochen wurde. 
eure Links habe ich schon gesehen
also ich abe die Leerzeile und die MANIFEST.MF ist auch in einem unterordner erstellt wurden
Der Inhalt ist immer noch:
"
Manifest-Version: 1.0
Main-Class: Cronik2

"

Der Ordner heißt aber: META-INF


so das BatchProgramm aus der FAQ bringt nach Ändrung folgende Meldung:
"
JarBatch - erzeugen von jar-Dateien

Der Befehl "jar" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Entsprechende Dateien wurden dem jar-Archiv hinzugef³gt.

Drücken Sie eine beliebige Taste . . .
"


----------



## L-ectron-X (24. Jun 2011)

Prüfe den Pfad zu deinem JDK-Verzeichnis. Den musst du in der Batchdatei auf deine Umgebung anpassen.


----------



## Seppel (25. Jun 2011)

Der Pfad ist der selbe wie den ich  in den Umgebungsvariablen genutzt habe
Die angepasste Batchdatei aus der FAQ müsste so stimmen:


```
@echo off
echo JarBatch - erzeugen von jar-Dateien
echo.
rem --> anpassen!
rem * Hier den Pfad zum SDK setzen!
set path=.;C:\Program Files\Java\jre1.6.0_06\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 Image für Splashscreen hier angeben! (optional)
echo Splashscreen-Image: splash.png>>manifest.mf 

rem --> anpassen!
rem * Bitte Main-Class hier angeben! (Die Klasse mit der main()-Methode)
rem * Wenn die Main-Class in einem Package liegt, muss es mit angegeben werden.
echo Main-Class: Cronik2>>manifest.mf

rem * Abschließende Leerzeile nicht vergessen!
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 * Anwendungsbeispiel: jar cfvm ArchivName.jar manifest.mf *.class images sounds
rem * würde ein Manifest, alle class-Dateien und die Verzeichnisse images und sounds in ein eine Jar-Datei namens ArchivName.jar einfügen.
rem * Bitte Name der zu erstellenden jar-Datei hier angeben!
jar cfvm Cronik2.jar MANIFEST.MF [Cronik2$1.class][Cronik2$1ActionJList.class][Cronik2$1CMeinActionLauscher.class][Cronik2$CBildLeinwand.class][Cronik2$CMeineCanvas.class][Cronik2$sucheperson.class][Cronik2.class]
echo Entsprechende Dateien wurden dem jar-Archiv hinzugefügt.
goto end

:errorjava
echo java-Dateien nicht gefunden!
echo class-Dateien konnten nicht erstellt werden.

:errorjar
echo class-Dateien konnten nicht gefunden werden!
echo jar-Archiv konnte nicht erstellt werden.

:end
rem * Manifest von Festplatte löschen 
del manifest.mf

rem * Konsole für Ausgaben geöffnet lassen
echo.
pause
```


----------



## L-ectron-X (25. Jun 2011)

Du hast also das JRE 1.6 Update 6 installiert? In einer JRE gibts das Dienstprogramm jar.exe nicht, das gibts nur im JDK. Dein Pfad zeigt zur JRE.

Wenn du wirklich das JDK 1.6 Udate 6 installiert hast, versuchs mal so:


```
@echo off
echo JarBatch - erzeugen von jar-Dateien
echo.
rem --> anpassen!
rem * Hier den Pfad zum SDK setzen!
set path=.;"C:\Program Files\Java\jdk1.6.0_06\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 Image für Splashscreen hier angeben! (optional)
echo Splashscreen-Image: splash.png>>manifest.mf 

rem --> anpassen!
rem * Bitte Main-Class hier angeben! (Die Klasse mit der main()-Methode)
rem * Wenn die Main-Class in einem Package liegt, muss es mit angegeben werden.
echo Main-Class: Cronik2>>manifest.mf

rem * Abschließende Leerzeile nicht vergessen!
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 * Anwendungsbeispiel: jar cfvm ArchivName.jar manifest.mf *.class images sounds
rem * würde ein Manifest, alle class-Dateien und die Verzeichnisse images und sounds in ein eine Jar-Datei namens ArchivName.jar einfügen.
rem * Bitte Name der zu erstellenden jar-Datei hier angeben!
jar cfvm Cronik2.jar MANIFEST.MF *.class
echo Entsprechende Dateien wurden dem jar-Archiv hinzugefügt.
goto end

:errorjava
echo java-Dateien nicht gefunden!
echo class-Dateien konnten nicht erstellt werden.

:errorjar
echo class-Dateien konnten nicht gefunden werden!
echo jar-Archiv konnte nicht erstellt werden.

:end
rem * Manifest von Festplatte löschen 
del manifest.mf

rem * Konsole für Ausgaben geöffnet lassen
echo.
pause
```
Die Batchdatei wird nicht funktionieren, wenn du den falschen Pfad zum JDK angibst.
Du solltest unbedingt dein JDK/JRE updaten.


----------



## Seppel (25. Jun 2011)

Du wirst lachen ich habe nur: jdk1.6.0_24 und bei dem kam immer eine Fehlermeldung, aber das Programm startet durch doppelklick.

Ich habe bisher ab der Fehlermldung ne weiter gemacht, dachte da immer das ich den flaschen Pfad hatte und hab dann auf das jre gezeigt

Werde jetzt noch updaten dann läuft alles besser, danke


----------

