# .jar erstellen und starten



## Fetzi (8. Nov 2017)

Guten Morgen,

ich nutze den Java-Editor und möchte mir mein aktuelles Projekt zu einer .jar packen um diese dann über eine Batch zu starten.

Der Java Editor hat auch eine eingebaute Funktion die dazu in der Lage ist. Diese erzeugt mir dann meine Anfahren.jar und eine JEClasses.jar
Wenn ich meine Batch (java -jar test.jar) jedoch starte bekomme ich folgenden Fehler:
"Fehler:  Hauptklasse Anfahren konnte nicht gefunden werden oder geladen werden
 Ursache: java.lang.NoClassDefFoundError: no/hials/Anfahren (wrong Name: Anfahren)"

Ich weiß nicht so recht wie ich vorgehen soll. Ich habe es mal mit einer einfachen test.java ohne package und import probiert und das lief auch. Als ich denke mal es wird daran liegen, weiß aber nicht wirklich wie ich es beheben kann.


----------



## Salzzy (8. Nov 2017)

Wenn du das Projekt exportierst musst du die Main klasse angeben(Ist bei Eclipse zumindest so)


----------



## JStein52 (8. Nov 2017)

Es geht ja schon mal damit los warum du zwei Jar-Dateien kriegst (Anfahren und JEClasses) ...
In welcher Klasse ist denn z.B. deine main-Methode ? Du kannst dir den Inhalt deiner Jar-Dateien mit einem Zip-Programm anschauen ...


----------



## Fetzi (9. Nov 2017)

Meine main-Methode ist in Anfahren.
In der Anfahren.jar befindet sich Anfahren.class und ein Ordner "META-INF" welche die "MANIFEST.MF" enthält.


----------



## JStein52 (9. Nov 2017)

und im Manifest ist auch die Main-Klasse richtig eingetragen ?


----------



## Fetzi (9. Nov 2017)

Manifest-Version: 1.0
Class-Path: JEClasses.jar
Main-Class: Anfahren
Created-By: 9.0.1 (Oracle Corporation)


----------



## JStein52 (9. Nov 2017)

Fetzi hat gesagt.:


> Ursache: java.lang.NoClassDefFoundError: no/hials/Anfahren (wrong Name: Anfahren)"


mhmmm ... er sucht ja no/hials/Anfahren ...  warum eigentlich


----------



## JStein52 (9. Nov 2017)

Der einfachste Ausweg scheint mir übrigens dass du eine "richtige" IDE benutzt (Eclipse, NetBeans, IntelliJ).


----------



## Fetzi (9. Nov 2017)

Das weiß ich nicht.

Ich probiere aktuell die .jar Datei manuell zu erzeugen.
Ich nutzen dafür die Batch aus dem letzen Beitrag des Themas: https://www.java-forum.org/thema/jar-archiv-erstellen.13787/#post99600 

Zudem habe ich die Struktur von Anfahren.java geändert (package no.hials entfernt) und alle betroffenen imports angepasst. Also wenn ich das Programm über den JavaEditor starte funktioniert es.
Der crosscom bezogene import in Anfahren.java sieht jetzt wie folgt aus: "import crosscom.CrossComClient;"

So meine JarErzeugen.bat sieht wie folgt aus:

```
@echo off
echo JarBatch - erzeugen von jar-Dateien
echo.

set path=D:\Program Files\Java\jdk-9.0.1\bin

echo Manifest-Version: 1.0>manifest.mf

echo Class-Path: .>>manifest.mf

echo Main-Class: Anfahren>>manifest.mf

echo.>>manifest.mf

if exist *.class goto create

:compile
if not exist *.java goto errorjava
javac -O *.java

:create
if not exist *.class goto errorjar

jar cfvm Anfahren.jar manifest.mf Anfahren.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

del manifest.mf

echo.
pause
```

Jetzt bekomme ich eine .jar die auch startet.


----------



## JStein52 (9. Nov 2017)

Ich denke dass deine Verzeichnisstruktur in der jar nicht zur Package-Struktur gepasst hat. Aber wie gesagt, warum tust du dir dieses Gefummel an ? In NetBeans auf Build geklickt und alles ist fertig und läuft.


----------



## Fetzi (9. Nov 2017)

Wäre ja langweilig wenn alles direkt geht und wo bleibt da der Lerneffekt .

Natürlich wäre es einfacher. Ich porgrammiere einfach nur unglaublich gerne mit dem Java-Editor und bisher ging immer alles. Auch das Erzeugen und Nutzen von .jar Dateien lief immer


----------



## JStein52 (9. Nov 2017)

Fetzi hat gesagt.:


> wo bleibt da der Lerneffekt


Was hast du jetzt gelernt ?


----------



## Fetzi (9. Nov 2017)

Wie sich eine .jar Datei zusammensetzt und wie man "manuell" eine erzeugt


----------



## JStein52 (9. Nov 2017)

Hast du das wirklich gelernt ? Du hast nur gelernt wie du deinen Fehler umgehst indem du die Package-Definitionen weglässt. Wenn du es richtig gelernt hättest dann hättest du die Jar-Datei so erstellt dass sie zu deinen Package-Strukturen passt.


----------



## Fetzi (10. Nov 2017)

Ja, aber ich weiß was der Fehler war. Der Java-Editor hat in der Anfahren.jar die Unterordner nicht erzeugt.
Ganz oben in der .jar lag direkt die Anfahren.class. Sie hätte in "no/hials/Anfahren.class" sein müssen.
Ergo könnte ich es jetzt auch mit dem package arbeiten und die .jar richtig erzeugen.
Allerdings war die Ordnerstruktur aus einem anderen Projekt auf welches meines aufbaut. Daher wollte ich das Ganze eh aus no/hials entfernen.

Trotzdem Danke für die Hilfe!


----------



## JStein52 (10. Nov 2017)

Genau so isses


----------

