# JAR Datei mit NetBeans erstellen und ausführen



## blade (14. Jan 2010)

Hallo kann mir vielleicht jemand hier erklären wie ich unter NetBeans eine JAR Datei erstelle und diese unter Windows ausführe?
Benutze NetBeans 6.8 (das neueste)
unter Eclipse hab ich den Punkt export gefunden, nur unter Net Beans sehe ich das nicht.


----------



## Muli (14. Jan 2010)

Run -> Clean & Compile Main Project  .... im Ordner /DIST findest du dann in der Regel die JAR Datei.

Wenn Du dein JAR so erzeugst, siehst du am Ende in der "OUTPUT-BOX" den entsprechenden Aufruf via Prompt.
Normalerweise: java -jar projekt.jar

LG,
Muli


----------



## SuperSeppel13 (14. Jan 2010)

Du kannst eine Jar auch ohne Konsole ausführen, indem du sie mit der Java Plattform öffnest.
Wenn du sie standartgemäß mit der Java Plattform assoziierst ("Eigenschafte" --> "Offnen mit"), reicht auch ein Doppelklick.


----------



## L-ectron-X (14. Jan 2010)

Das stimmt, dann aber nur innerhalb der IDE. Wenn der das Jar-File braucht, muss er es erst erstellen lassen (Shift+F11).


----------



## blade (14. Jan 2010)

hab wie beschrieben eine jar datei erstellt und ausgeführt.
bekomm aber nur ne fehlermeldung.

C:\>java PingCheck.jar
Exception in thread "main" java.lang.NoClassDefFoundError: PingCheck/jar
Caused by: java.lang.ClassNotFoundException: PingCheck.jar
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: PingCheck.jar.  Program will exit.

irgendwie find ich es schade dass das alles nicht so gut funkt wie bei .net


----------



## maki (14. Jan 2010)

blade hat gesagt.:


> hab wie beschrieben eine jar datei erstellt und ausgeführt.
> bekomm aber nur ne fehlermeldung.
> 
> C:\>java PingCheck.jar


dann versuch doch mal

[c]java -jar PingCheck.jar[/c]



blade hat gesagt.:


> irgendwie find ich es schade dass das alles nicht so gut funkt wie bei .net


:lol:


----------



## blade (15. Jan 2010)

maki hat gesagt.:


> dann versuch doch mal
> 
> [c]java -jar PingCheck.jar[/c]
> 
> ...



warum lachst du?


----------



## blade (15. Jan 2010)

C:\>java  -jar PingCheck.jar
Exception in thread "main" java.lang.NoClassDefFoundError: 
Caused by: java.lang.ClassNotFoundException: javax.mail.Message
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: pingcheck.clsMailVersenden. Program will exit.

C:\>java  PingCheck.jar
Exception in thread "main" java.lang.NoClassDefFoundError: PingCheck/jar
Caused by: java.lang.ClassNotFoundException: PingCheck.jar
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: PingCheck.jar.  Program will exit.


----------



## xjCoder (15. Jan 2010)

Hi,

ich vermute mal, daß Dir jetzt die Bibliotheken fehlen, die Du in dem NetBeans-Project hattest.

Die müssen natürlich mit in den Classpath, sonst läuft Deine Applikation nicht.



```
java -cp ${Pfad zu Library#1};${Pfad zu Library#2} -jar PingCheck.jar
```

...oder vielleicht auch:


```
java -cp ${Pfad zu Library#1};${Pfad zu Library#2};PingCheck.jar Applikation
```


----------



## MQue (15. Jan 2010)

Du hast keine Klasse, die eine main- Methode beinhaltet, ausgeführt wird eine jar, welche eine main- Methode beinhaltet, so: java -jar PingCheck.jar
Das andere kannst du vergessen, 

Also mach dir eine main- Methode in dein Programm rein, oder zeig mal, wie dein main aussieht.

[EDIT]
Mach dir einen Ordner, wo du deine jar reingibst (PingCheck.jar) und auch die anderen jar, von dem dein Projekt abhängt (z.B.: lib/benoetigt.jar, lib/... -> ),
-> in deiner Jar- Datei liegt eine Manifest.MF- Datei, da steht drinnen, wo deine benötigten (externen) jars liegen müssen, meist ist das der lib- Ordner, deshalb habe ich oben lib/... geschrieben.
in diesen Ordner legst du dann die externen jars und gut is.

dann navigierst du im command (cmd) zu diesem Ordner und versuchst es nochmal mit java -jar PingCheck.jar


----------



## blade (15. Jan 2010)

ah ok ich bin jetzt hin und hab die jar dateien die in dem mail paket von sun waren mit in das verzeichnis eingefügt wo meine eigene jar datei liegt.
dann hab ich java -jar pingcheck.jar eingegegeben und es hat funktioniert.
ist das so auch die gängige art?
denke mir wenn man große projekte hat kommen auf die art bestimmt einige dateien zusammen.


----------



## MQue (15. Jan 2010)

Wir haben eine Zeit lang in der Firma alle Desktop programme so ausgeliefert mit einer *.bat bzw. *.sh (ausführbare Linuxdatei) dazu, bat- datei link auf den Desktop, Ordner in einer Verzeichnisstruktur, dann kannst du die bat- Datei noch mit einem Icon versehen und fertig. 

Es gibt aber auch andere Möglichkeiten, ein Programm auszuliefern:

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


----------



## maki (15. Jan 2010)

blade hat gesagt.:


> warum lachst du?


Weil du deinen Fehler auf die Sprache/Plattform schiebst


----------



## blade (15. Jan 2010)

maki hat gesagt.:


> Weil du deinen Fehler auf die Sprache/Plattform schiebst



nein einen fehler schieb ich nicht auf eine sprache!
java ist halt für mich total ungewohnt, ich kam halt mit .net schneller zurecht. finde es dadurch das man keine pakete importieren muss und nur eine ausführbare exe hat für den einsteiger einfacher.

ist halt nur doof das man fürs studium java benutzen "muss" auch wenn in meiner firma sehr viel c# und vb.net verwendet wird.


----------



## maki (15. Jan 2010)

blade hat gesagt.:


> nein einen fehler schieb ich nicht auf eine sprache!


Ach wirklich? 
Wie hasst du denn das hier gemeint:


> irgendwie find ich es schade dass das alles nicht so gut funkt wie bei .net


Denn das hier klingt schon wieder ganz anders, da klingt  das nciht so als ob unter .Net "alles besser funkt"


blade hat gesagt.:


> java ist halt für mich total ungewohnt, ich kam halt mit .net schneller zurecht. finde es dadurch das man keine pakete importieren muss und nur eine ausführbare exe hat für den einsteiger einfacher.


----------



## blade (15. Jan 2010)

du schneidest dir auch sätze zusammen wie du sie gerade brauchst.

hab jetzt ausserdem keine lust zu streiten welche sprache besser ist. sicher hat jede ihre vorzüge.
wenn du darüber diskutieren willst musst du ein neues thema eröffnen, weil hier gehört das jetzt nicht dazu.



an alle anderen vielen dank für eure produktive hilfe, habt mir sehr geholfen!


----------



## maki (15. Jan 2010)

> du schneidest dir auch sätze zusammen wie du sie gerade brauchst.


Nun mal den ball ganz flach halten hier, auf solche Unterstellungen reagiere ich sehr ungehalten.



> wenn du darüber diskutieren willst musst du ein neues thema eröffnen, weil hier gehört das jetzt nicht dazu.


Das Gejammer dass unter .Net alles "besser funzt" kam von dir, dann kannst du es gleich bleiben lassen. 
Jedenfalls bist du nicht in der Position einem Mod zu erklären welchen Inhalt Threads/Diskussionen haben sollten, insbesondere wenn du die Diskussion anfängst.


----------



## scaary (28. Apr 2010)

Hiho,

Ich grabe den alten Thread hier nochmal aus, da ich ebenfalls ein problem mit der Erstellung einer Funktionierenden .JAR hab.

Es kann sein, dass ich von Eclipse verwoehnt bin, aber da bin ich es so gewoehnt, dass mir mein Projekt inklusive aller benoetigten Libraries in EINE Jar Datei gepackt wird, und ich das Ding verschicken kann, wie ich lustig bin.

Bei NetBeans hab ich aber nur eine winzige Jar Datei und ansonsten einen lib Ordner, in der meine externen Quellen liegen.

Wie bringe ich NetBeans dazu, mir das ganze auch in eine Jar zu packen?

Danke


----------



## L-ectron-X (28. Apr 2010)

Das geht in Eclipse, wenn dort das FatJat-Plugin integriert ist.
Eine Lösung für NetBeans hat auch vor kurzem jemand gepostet, aber ich finde gerade den Thread nicht mehr.


----------



## blade (29. Apr 2010)

Das ist ja mal interessant zu wissen das es sowas auch gibt.
War da nämlich etwas entäucht das ich unter java immer den lib Ordner mitschleppen muss.
Wenn einer noch beschreiben könnte wie das ganze dann unter NetBeans geht, das man nur noch eine Datei hat würde mich das auch freuen


----------



## The_S (29. Apr 2010)

Warum wollt ihr immer alles in eine JAR packen? Das ist doch total sche***!

Hat irgendjemand von euch schon mal ein halbwegs professionelles Programm gesehen, das aus genau 1er Datei besteht? Nein? Gut, dann packt eure Programme auch nicht als eine einzige JAR, wenn ihr mehrere Libraries verwendet! Hat schon seine Gründe ...

Hier mal ein zwei:

1.) Wenn die externen Libraries nicht von dir selbst sind, musst du dich an die Lizenzbestimmungen halten. Und die können das einbinden der Library verbieten oder an bestimmte Bedingungen knüpfen
2.) Stell dir vor, du verteilst eine fette Jar. Plötzlich fällt dir auf, dass eine Library einen Bug hat oder eine neue Version ganz tolle Verbesserungen/Performancesteigerungen bringt. Wie lieferst du das Update aus? Willst du wirklich deinen User dazu zwingen, das komplette Programm mit bspw. mehreren 100MB noch mal runterzuladen? Wäre es nicht geschickter, stattdessen lieber nur eine kleine Lib mit wenigen KB auszutauschen? Das wäre ja fast so, wie wenn dein Antivirenprogramm bei jedem Update dich dazu zwingen würde, das Programm neu zu installieren.

und überhaupt ... bäh


----------



## L-ectron-X (29. Apr 2010)

Hab zwar den Thread nicht mehr gefunden, dafür aber einen Link bei Sun/Oracle.
Für die Leute, die das unbedingt brauchen: Use NetBeans IDE 6.7 to Combine JAR Files Into a Single JAR File


----------



## scaary (29. Apr 2010)

Du bist mein HELD, DANKE!!!!

@ The_S

Ich bin Hobbyprogrammierer und beschaeftige mich nicht sehr oft damit. 
Ich schreibe einige, kleiner Programme fuer meinen Vater und dessen Firma (eher so kleine Helferselfer, die das Leben einfacher machen).
Daher will ich nicht, dass sich das ganze unnoetig verkompliziert, indem ich meinem Vater mehr als eine Datei schicken muss.

Und Zur groesse:

Wenn so ein programm 5MB hat, ist das schon richtig viel.. .

LG Scaary


----------



## Gas (29. Apr 2010)

L-ectron-X hat gesagt.:


> Das geht in Eclipse, wenn dort das FatJat-Plugin integriert ist.


FatJar Plugin ist meines Wissens mittlerweile gar nicht mehr nötig, wenn man eine executable Jar über Export erstellt. Ab Eclipse Galileo zumindest auf jeden Fall.


----------

