# Netbeans und JAR



## ArtjomZab (9. Apr 2008)

Wie kann ich mein Netbeans-Projekt in eine einziege jar-Datei packen? Bei
Eclipse geht das auf Knopfdruck. Bei Netbeans dagegen, erhalte ich einen Ordner mit
Konfigurationsdateien und den Quelltexten.


----------



## Joker (9. Apr 2008)

klick mal auf den "Hammer" (Build) oder F11. Anschließend liegt dein jar dann im dist Ordner deines Projektes.


----------



## Gast (10. Apr 2008)

Rechte Taste auf Projekt und dann clean und build. danach ist im unterverzeichnis dist dein jar-file


----------



## ArtjomZab (12. Apr 2008)

Das mit dem dist Verzeichnis ist mir schon klar. Aber die jar datei benötigt alle daten aus dem 
projektordner. Ich wollte wissen, wie man jar dateien erzeugt, die alleine existieren können und
allein ausführbar sind. Wenn ich auf build klicke, erhalte ich eine ganze ordnerstruktur. Ich benötige
aber eine einzige jar datei, mit der ich das projekt ausführen kann.


----------



## L-ectron-X (12. Apr 2008)

Sowas wie das FatJat -PlugIn in Eclipse gibts bei NetBeans meines Wissens nicht.
Aber das muss kein Nachteil sein, denn so bleiben die externen Bibliotheken austauschbar.


----------



## der_Ben (14. Apr 2008)

Die standardmäßig von NetBeans erzeugte JAR Datei, die im Verzeichnis "dist" erstellt wird, enthält "nur" die eigenen Projektdateien. Externe Bibliotheken landen im Unterverzeichnis "lib".
Diese lassen sich aber auch in die JAR mit einbinden!
Im "Projects" Fenster müssen dafür die die benötigten Bibliotheken via Drag&Drop vom "Libraries" Baum in den "Source Packeges" gezogen werden. Dadurch kopiert NetBeans die einzelnen CLASS Dateien ins Projekt Verzeichnis und packt diese dadurch später auch in die JAR Datei.


----------



## Guest (26. Jun 2008)

hallo, 

bin bei einem ähnlichen Problem auf diesen Thread gestoßen.
Ich verwende swingX components in meiner Anwendung.
Nun möchte ich die Anwendung in einer einzigen .jar Datei verteilen. 
Leider packt er die swingX Dateien in den "lib" ordner und nicht mit in die jar Datei.
Via Drag&Drop lässt sich die Lib auch nicht in den SourceOrdern verschieben?
Kann mir da vielleicht einer weiter helfen???


----------



## der_Ben (26. Jun 2008)

Aber natürlich...
das Workaround ist folgendermaßen:

Im PROJECTS Fenster (links) sind ja die Dateien innerhalb der Packages aufgelistet. Unter SOURCE PACKAGES sind deine Quellcodes zu finden, unter LIBRARIES sind zusätzliche Libraries, wie z.B. das von dir verwendete SWINGX zu finden. Wenn du nun auf die Titelleiste von PROJECTS klickts gibt es die Auswahlmöglichkeit VIEW JAVA PACKAGES AS - dieses muss auf TREE gestellt werden, dann wechselt die Ansicht in einen Verzeichnis-Modus. Nun kann per Drag&Drop die SWINGX Library in SOURCE PACKAGES gezogen und somit kopiert werden.
Lässt Du nun das Project erstellen, wird eine JAR Datei erstellt, die alleine lauffähig ist. Bitte beachte, dass der LIB unterordner mit den Librarys dennoch erstellt wird. Zum Ausführen wirddieser aber nicht benötigt.
Klar soweit? ;-)

MfG
der Ben


----------



## Guest (26. Jun 2008)

soweit klar   

müsste dann nicht aber im source package n neuer ordner erscheinen??
oder wie kann ich sehen das ich erfolg hatte??


----------



## Guest (26. Jun 2008)

meine frage hat sich erledigt.
es funktioniert   

vielen dank.. ohne diese info hätte ich wahrscheinlich noch wochen daran gewerkelt


----------



## der_Ben (26. Jun 2008)

Das ist richtig, nach dem Drag&Drop und dem resultierenden Kopieren muss im SOURCE PACKAGE auch ein neuer Ordner erscheinen... (org.jdesktop.swingx oder sowas...)


----------



## JavaKing (11. Sep 2008)

> Im PROJECTS Fenster (links) sind ja die Dateien innerhalb der Packages aufgelistet. Unter SOURCE PACKAGES sind deine Quellcodes zu finden, unter LIBRARIES sind zusätzliche Libraries, wie z.B. das von dir verwendete SWINGX zu finden. Wenn du nun auf die Titelleiste von PROJECTS klickts gibt es die Auswahlmöglichkeit VIEW JAVA PACKAGES AS - dieses muss auf TREE gestellt werden, dann wechselt die Ansicht in einen Verzeichnis-Modus. Nun kann per Drag&Drop die SWINGX Library in SOURCE PACKAGES gezogen und somit kopiert werden.
> Lässt Du nun das Project erstellen, wird eine JAR Datei erstellt, die alleine lauffähig ist. Bitte beachte, dass der LIB unterordner mit den Librarys dennoch erstellt wird. Zum Ausführen wirddieser aber nicht benötigt.



Also ich benutze Netbeans 6.1 und da kann ich auf Projects klicken soviel ich will da passiert nichts. Ich finde das leider nicht.
Wenn ich auf meine.jar Datei doppelklicke (Windows) dann kommt folgende Fehlermeldung "Could not find the main class. Program will exit" ich habe aber unter den Projects Einstellungen die main class angegeben.
In meinem Fall "projekt.GUI"


```
public class GUI extends javax.swing.JFrame {
    
    //Null initalisieren
    Projekt projekt = null;
    GLCanvas canvas = null;
    Animator animator = null;
 
    /** Creates new form GUI */
    public GUI() {
      initComponents();
      canvas = new GLCanvas();                // Canvas instanzieren
      projekt = new Projekt(this);
      canvas.addMouseMotionListener(projekt);
      canvas.addGLEventListener(projekt);
      canvas.addMouseListener(projekt);
      canvas.addKeyListener(projekt);
      canvas.setSize(1024,768);
      getContentPane().add(canvas);           // Canvas der Oberfläche hinzufügen
      canvas.requestFocusInWindow();          // Focus für Tastatur in Canvas transferieren
      animator = new Animator(canvas);
      animator.start();                       // OpenGL-Animation starten
      pack();
    }
```

Was mache ich falsch ?


----------



## dev/null (11. Sep 2008)

Löschen wäre klasse


----------



## dev/null (11. Sep 2008)

Die Klasse GUI hat ja auch keine main(...), da kann Netbeans noch so viele Jars erstellen...

Bau in deine Klasse GUI eine main(...) ein z.B:

```
public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new GUI.setVisible(true);
            }
        });
    }
```

Sollte Netbeans automatisch so machen wenn Du von Anfang an damit gearbeitet hast.
Wenn du das ganze als eigene Application haben möchtest, dann brauchst Du ein neues Project, also die Funktionalität auslagern (eigenes *.jar) Kann man auch von hier aus aufrufen
(Zur besseren Übersicht gibt es auch Project Goups)

Zur Einbindung von eigenen Komponenten und deren Benutzung 
in Netbeans möchte ich zuallererst auf diese sehr hilfreiche Seite verweisen :

http://forum.byte-welt.de/showthread.php?t=541

Wenn noch Probleme mit Netbeans oder dem GUI.Builder Matisse bestehen sollten, dann bitte weiter fragen 
Antworte gerne wenn ich Zeit habe...->

GUIBuilder sind nicht immer das beste Mittel der Wahl, aber wenn man weiß, wie man Sie seinen Bedürfnissen anpasst, und damit umgehen kann, warum nicht.

Das Du auf die *.jar klickst und nix passiert hat nix mit Java zu tun, sondern eher mit der "Manifest-Datei" weil
der Parameter "Main-Class: package...." dort nicht stimmt. Es gibt ja keine main...;>

Mfg


----------



## JavaKing (11. Sep 2008)

```
public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new GUI.setVisible(true);
            }
        });
    }
```

Diese main class hab ich natürlich. Sorry war gestern wohl ein wenig spät.

Im Manifest steht folgendes :

```
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.0
Created-By: 10.0-b22 (Sun Microsystems Inc.)
Main-Class: projekt.GUI
Class-Path: 
X-COMMENT: Main-Class will be added automatically by build
```


Ich bekomme bei "Clean and build" noch folgende Fehlermeldung...

..\nbproject\build-jogl-template-impl.xml:86: ..\${libs.JOGL.classpath}-natives-windows-i586 not found.

Er kann trotz allem immernoch nicht die main class finden obwohl alles richtig angegeben ist.


----------

