# Windowbuilder -> Export -> .jar



## br0t (31. Mai 2012)

Tach,

ich habe in Eclipse 3.7 das Windowbuilder Plugin installiert. Ich versuche nun verzweifelt, damit erstellte GUIs als .jar zu exportieren. Hab dafür einfachste Klassen erstellt, als JApplet, Application, JFrame, JPanel usw. alles mal durchprobiert. Dann lediglich ein Label oder Textfeld reingezogen damit man irgendwas sehen würde. Dann das Projekt markiert, auf Export als JAR.

Das Problem ist, dass ich keine der erstellten GUI-Klassen als Main Class angeben kann: Sie tauchen in der Liste schlicht nicht auf. Das scheint an der fehlenden main-Methode zu liegen. Was also tun? 
Habe wenig Erfahrung mit Java und es treibt mich grade halb in den Wahnsinn. 

Ich möchte einfach nur ein kleines Programm mit einer GUI schreiben, dass ich nachher als executable .jar oder applet ausführen kann, mehr nicht. Bitte um Hilfe!

Gruß


----------



## Fab1 (31. Mai 2012)

> Das scheint an der fehlenden main-Methode zu liegen. Was also tun?



Dann erstelle doch einfach die main-Methode oder blick ich da gerade nicht durch ???:L


----------



## br0t (31. Mai 2012)

Hey danke für deine Antwort.

Hab ich versucht, der Export ist dann auch möglich, aber die .jar macht dann halt nix. Die Funktionalität steckt WindowBuilder in eine Methode die genau wie die Klasse heisst. Diese Methode darf nicht "static" sein, da sonst die referenzierten Methoden wie "getContentPane" etc aus der JApplet nicht mehr funktionieren. D.h. ich kann diese Methode nicht einfach aus einer neu erstellten main-Methode aufrufen ("Cannot make a static reference to the non-static method ...").

Hier mal ein ganz simples Beispiel mit einem Button, das mir WindowBuilder generiert:


```
import javax.swing.JApplet;
import javax.swing.JButton;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class myGuiClass extends JApplet {

	/**
	 * Create the applet.
	 */
	public myGuiClass() {
		getContentPane().setLayout(null);
		
		JButton btnMybutton = new JButton("myButton");
		btnMybutton.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {
				System.out.println("Button pressed!");
			}
		});
		btnMybutton.setBounds(10, 11, 91, 23);
		getContentPane().add(btnMybutton);

	}
}
```

Das Teil hätt ich gerne einfach als irgendwas lauffähiges exportiert, entweder runnable .jar oder als Applet... 
Kann doch nicht so schwer sein, hab ich gedacht. Ich hab das Gleiche mit nem JDialog, JFrame und Application Window (aus dem Swing Designer Untermenü des WindowBuilder) probiert, überall das Gleiche. 
Bin für jede Hilfestellung dankbar!


----------



## knucki (31. Mai 2012)

Ich sehe da keine Main-Methode, nur einen Konstruktor... :rtfm:


----------



## Fab1 (31. Mai 2012)

Von dieser vom WindowBuilder erstellten Klasse machste von der main aus ein Objekt und fügst dem GUI oder was auch immer hinzu.

Sowas ähnlich wie:


```
public class EineKlasse{

public static void main(String[]args){

myGuiClass einObjekt = new myGuiClass();

// was dir sonst so einfällt.
     }

}
```


----------



## br0t (31. Mai 2012)

@knucki: ja hab ich der einfachheit halber wieder weggelassen, da es so eh nicht funktioniert, wie oben beschrieben. ich kann den konstruktor nicht aus der main aufrufen.

@fab1: Danke für den Tipp. Habe eine neue main Klasse erstellt und dort mein gui objekt erstellt. Der Export klappt danach problemlos, aber weder beim Ausführen in Eclipse noch der exportierten .jar passiert irgendwas  Beim Ausführen der .jar erscheint sehr kurz ein cmd fenster, soweit ich das lesen kann steht da was von "Could not load main class ...".

Hier nochmal beide Klassen so simpel wie es nur geht, vielleicht kann jemand das kurz bei sich ausprobieren? Danke euch !


```
import javax.swing.JApplet;
import javax.swing.JButton;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class myGuiClass extends JApplet {

	public myGuiClass() {
		getContentPane().setLayout(null);
		
		JButton btnMybutton = new JButton("myButton");
		btnMybutton.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {
				System.out.println("Button pressed!");
			}
		});
		btnMybutton.setBounds(10, 11, 91, 23);
		getContentPane().add(btnMybutton);

	}
}

/**************
**************/


public class myMain {

	public static void main(String[] args) {
		myGuiClass myGUI = new myGuiClass();

	}
}
```


----------



## Solor (31. Mai 2012)

Wenn du die Fehlermeldung ham willst, starte es über eine batch datei und füge danach ein "PAUSE" ein
Kann es sein, dass du es vielleicht nicht als runable .jar exportierst?
Möglicherweise kann es auch an der java version an deinem pc liegen.


----------



## br0t (31. Mai 2012)

hey solor, danke für den hinweis. hab definitiv in eine runnable jar exportiert.
fehlermeldung lautet: 
"Error: Could not find or load main class C:\Users\br0t\Desktop\myGUI.jar"

kannst du vielleicht das gleiche einfach mal bei dir probieren? das gäbe schonmal einen hinweis darauf obs am code liegt oder an meinem system. ich hab das jdk und jre 7 installiert


----------



## Solor (31. Mai 2012)

ich kanns mal probieren, ich benutz aber nicht den window builder sondern den normalen export mechanismus von eclipse


----------



## br0t (31. Mai 2012)

Ich auch bzw. habs auch mit dem Fat Jar Plugin probiert, mit dem WindowBuilder klick ich mir nur die GUI zusammen und er macht mir Code draus.

Danke fürs Probieren!

EDIT: die normale Exportfunktion hat bei mir irgendwie Probleme, in der Liste der Klassen stehen Sachen die ich schon längst gelöscht habe und direkt neu erstellte Klassen tauchen nicht auf...puh.
Nehme deshalb den Fat Jar Exporter.

EDIT: Okay anscheinend ist das Problem unabhängig von WindowBuilder und GUI: Ich hab grad die einfachste Klasse der Welt 


```
public class doStuff {
	public static void main(String[] args) {
		System.out.println("test");
	}
}
```

als runnable jar exportiert, und sie lässt sich trotzdem nicht ausführen: "Could not find or load main class..."

Da scheint generell was im Argen zu liegen. Ideen  ?


----------



## Solor (31. Mai 2012)

also bei mir geht das so weit mit dem source code den du gepostet hast, ich benutz die java version 1.7.0_03-b05 und eclipse 3.7.1, allerdings öffnet sich bei mir kein fenster sondern es steht nur in der konsole "Gestartet", ich habe noch eine endlosschleife und eine System.out.println()-Befehl hinzugefügt

edit: Ist bei mir auch so mit den klassen geht aber noch finde ich


----------



## Solor (31. Mai 2012)

Hast du es jetzt mit dem eclipse exporter oder mit fat jar gemacht?


----------



## br0t (31. Mai 2012)

Danke für deine Mühe. Das ist merkwürdig, dass sich kein Fenster öffnet. Aber zumindest bekommst du keine Fehlermeldung?
Wie ich grad oben editiert habe, scheint da generell bei mir ein Problem beim Finden der Main Class zu bestehen...

EDIT: mit fat jar


----------



## Solor (31. Mai 2012)

dann schau mal obs mit dem normalen export mechanismus von eclipse geht
ich hab auch mal fat jar benutzt und auch das problem gehabt


----------



## Solor (31. Mai 2012)

dann schau mal obs mit dem normalen export mechanismus von eclipse geht
ich hab auch mal fat jar benutzt und auch das problem gehabt

So sieht jetzt bei mir MyMain aus:
[Java]
package windowbuilder

public class myMain {

    public static void main(String[] args) {
        myGuiClass myGUI = new myGuiClass();
        System.out.println("Gestartet");
        while (true)
        {

        }

    }
}
[/Java]

achso, habs noch in ein eigenes package getan - der ordnung halber

edit: dafuq neuen beitrag angefangen :noe:


----------



## br0t (31. Mai 2012)

die normale exportfunktion will einfach nich vernünftig bei mir. ich kann die neuen klassen nicht als main class anwählen, sie tauchen in der liste nicht auf. eclipse spackt da echt manchmal so rum. habs erst gestern neu runtergeladen...grrrrrr


----------



## Solor (31. Mai 2012)

du musst die klassen erst einmal ausführen, bevor sie in der liste erscheinen


----------



## br0t (31. Mai 2012)

Danke du hast Recht, dadurch tauchen sie in der Liste auf. Export klappt, keine Fehler. Ausführen klappt wieder nicht: Could not find or load main class

gnar :autsch:


----------



## Solor (31. Mai 2012)

ich hab mal ein bisschen bei google gesucht nach allem was ich gesehen hab kann ich dir nur empfehlen, java neu aufzusetzen. Ansonsten können wir noch mal unsere jar-files untereinander austauschen und schauen, ob sie beim jeweils anderen funktionieren

edit:  Mach mal in der Konsole (wenn du keine VM am laufen hast) java -version und schreib mal was da kommt bitte


----------



## br0t (31. Mai 2012)

okay ich werd java mal komplett neu drauf hauen...

ansonsten falls du magst kannst du ja mal eben das hier testen:
File-Upload.net - RunnableJarTest.jar

is ne batch datei dabei um die etwaige fehlermeldung zu sehen. die klasse selber hat nur ne main mit nem println befehl.


----------



## Solor (31. Mai 2012)

ok werds mal probieren


----------



## Solor (31. Mai 2012)

ok werds mal probieren

Und: Auf welchen Download-button muss ich klicken oder brauch ich diese iLivid?

edit: habs gefunden


----------



## Solor (31. Mai 2012)

also bei mir erscheint dann auf der Konsole das wort "test"


----------



## Solor (31. Mai 2012)

also bei mir läufts, da erscheint das wort "test", stimmts? 

edit: bei mir hängts gerad, tschuldige, dass ich manche beiträge doppelt und dreifach im forum hab.
muss jetz off, hoffe du schaffst es ohne mich


----------

