# Eclipse "Selection does not contain a main type"



## Viewty-Fan (3. Jul 2010)

Hallo,
ich bin gerade von BlueJ auf Eclipse umgestiegen, und stehe vor einem Problem. Wenn ich den Code, eines Freundes ausführe (der hundert prozentig funktioniert) bekomme ich die Fehlermeldung:Selection does not contain a main type. Ich bin langsam am verzweifeln. Was funktioniert da nicht wie es soll?
Hier ein Screenshot.






Gruß
Viewty-Fan


----------



## mvitz (3. Jul 2010)

Es muss


```
public static void main
```

sein. Bei dir fehlt das static


----------



## energy47 (3. Jul 2010)

das programm kann so nicht ausgeführt werden da die main methode fehlt..
bei BlueJ lernt man das katastrophaler weise nicht..

also statt :

```
public void main() schreibst du :
public static void main (String[] args)
```


----------



## Final_Striker (3. Jul 2010)

So sieht einen main-Methode aus. ;-)

Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 3.11 Der Einstiegspunkt für das Laufzeitsystem: main()


----------



## Viewty-Fan (3. Jul 2010)

Danke für die Antwort, aber so funktioniert es auch nicht. Ich kann doch nicht alles static machen.  Dadurch bekomme viele Fehlermeldungen dieser Art:"Cannot make a static reference to the non-static field Framework".
Der Code sieht jetzt so aus:


```
import java.awt.*;
	import javax.swing.JButton;
	
public class HelloWorld {

	/**
	 * @param args
	 */
	 Frame Framework=new Frame ("AIT-Projekt");
     TextField INPUT=new TextField ("Eingabe",20);
     TextField OUTPUT=new TextField ("Ausgabe",40);
     JButton Spiegeln = new JButton ("Spiegeln");
     JButton Turn = new JButton ("Drehen");
     JButton Palindrom = new JButton ("Palindrom");
     JButton nicht = new JButton ("abc");   
	
     public static void main (String[] args)
		// TODO Auto-generated method stub

	    
        Framework.setSize(340,180);
        Framework.setVisible(true);
        Framework.setAlwaysOnTop(true);
                
        INPUT.setBounds(10, 40, 195, 58);
        OUTPUT.setBounds(10, 107, 195, 58);        
        Spiegeln.setBounds(220, 40, 100, 35);        
        Palindrom.setBounds(220, 85, 100, 35);        
        Turn.setBounds(220, 130, 100, 35);
        nicht.setVisible(false);
        Spiegeln.setBackground(new Color(191, 207, 255)); 
        Turn.setBackground(new Color(191, 207, 255)); 
        Palindrom.setBackground(new Color(191, 207, 255)); 
        INPUT.setBackground(new Color(255, 247, 223));
        OUTPUT.setBackground(new Color(255, 247, 223));
        Framework.setBackground(new Color(221, 255, 187));
	}

}
```


----------



## slawaweis (3. Jul 2010)

Viewty-Fan hat gesagt.:


> Danke für die Antwort, aber so funktioniert es auch nicht. Ich kann doch nicht alles static machen.  Dadurch bekomme viele Fehlermeldungen dieser Art:"Cannot make a static reference to the non-static field Framework".
> Der Code sieht jetzt so aus:


Du kannst alles static machen, dauert nur 15-20 Sekunden. Doch das ist nicht der Sinn der Sache. Ich denke, dass dieser Code nicht mal in BlueJ richtig war, aber egal. Du kannst folgendes machen. Lasse die main() Methode wie sie ursprünglich war, also nicht static. Schreibe das zusätzlich in die Klasse:


```
public static void main(String [] args) {
  new HelloWorld().main();
  }
```

dann sollte es laufen. Doch ich denke, dass in BlueJ ursprünglich die main() Methode der Konstruktor war, also:


```
public HelloWorld() {
        super();
        
        Framework.setSize(340,180);
        Framework.setVisible(true);
        Framework.setAlwaysOnTop(true);

        // ...
  }
```

Slawa


----------



## Viewty-Fan (3. Jul 2010)

Funktioniert immer noch nicht ;(
Der Code:

```
import java.awt.*;
	import javax.swing.JButton;
	
public class HelloWorld {

	/**
	 * @param args
	 */
	 Frame Framework=new Frame ("AIT-Projekt");
     TextField INPUT=new TextField ("Eingabe",20);
     TextField OUTPUT=new TextField ("Ausgabe",40);
     JButton Spiegeln = new JButton ("Spiegeln");
     JButton Turn = new JButton ("Drehen");
     JButton Palindrom = new JButton ("Palindrom");
     JButton nicht = new JButton ("abc");   
	
     public static void main(String [] args) {
    	  new HelloWorld().main();
    	  }

		// TODO Auto-generated method stub
     public HelloWorld() {
         super();
	    
        Framework.setSize(340,180);
        Framework.setVisible(true);
        Framework.setAlwaysOnTop(true);
                
        INPUT.setBounds(10, 40, 195, 58);
        OUTPUT.setBounds(10, 107, 195, 58);        
        Spiegeln.setBounds(220, 40, 100, 35);        
        Palindrom.setBounds(220, 85, 100, 35);        
        Turn.setBounds(220, 130, 100, 35);
        nicht.setVisible(false);
        Spiegeln.setBackground(new Color(191, 207, 255)); 
        Turn.setBackground(new Color(191, 207, 255)); 
        Palindrom.setBackground(new Color(191, 207, 255)); 
        INPUT.setBackground(new Color(255, 247, 223));
        OUTPUT.setBackground(new Color(255, 247, 223));
        Framework.setBackground(new Color(221, 255, 187));
	}

}
```

Die Fehlermeldung:


```
Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	The method main(String[]) in the type HelloWorld is not applicable for the arguments ()

	at HelloWorld.main(HelloWorld.java:18)
```

Das der Konstruktor die main() Methode war ist sehr gut möglich.

Viewty-Fan


----------



## energy47 (3. Jul 2010)

also eclipse sollte dir bestens bei der fehler suche helfen,

erstmal erstelle ein packet zb "helloworld"; erstelle eine klasse "HelloWorld"

kopiere diesen kode da rein:


```
package HelloWorld;

import java.awt.*;
import javax.swing.JButton;
    
public class HelloWorld {
 
    /**
     * @param args
     */
     Frame Framework=new Frame ("AIT-Projekt");
     TextField INPUT=new TextField ("Eingabe",20);
     TextField OUTPUT=new TextField ("Ausgabe",40);
     JButton Spiegeln = new JButton ("Spiegeln");
     JButton Turn = new JButton ("Drehen");
     JButton Palindrom = new JButton ("Palindrom");
     JButton nicht = new JButton ("abc");   
    
     public static void main(String [] args) {
          new HelloWorld();
          }
 
        // TODO Auto-generated method stub
     public HelloWorld() {
                 
        Framework.setSize(340,180);
        Framework.setVisible(true);
        Framework.setAlwaysOnTop(true);
                
        INPUT.setBounds(10, 40, 195, 58);
        OUTPUT.setBounds(10, 107, 195, 58);        
        Spiegeln.setBounds(220, 40, 100, 35);        
        Palindrom.setBounds(220, 85, 100, 35);        
        Turn.setBounds(220, 130, 100, 35);
        nicht.setVisible(false);
        Spiegeln.setBackground(new Color(191, 207, 255)); 
        Turn.setBackground(new Color(191, 207, 255)); 
        Palindrom.setBackground(new Color(191, 207, 255)); 
        INPUT.setBackground(new Color(255, 247, 223));
        OUTPUT.setBackground(new Color(255, 247, 223));
        Framework.setBackground(new Color(221, 255, 187));
    }
 
}
```


die buttons textfelder etz müssen noch in die contentPane eingefügt werden..




vielleciht noch was zu den fehlern:


```
import java.awt.*;   // hier importierst du klassen und packete... wohin?? hier fehlt ein
 import javax.swing.JButton;      //packet zb package mypacket;
    
public class HelloWorld {
 
    /**
     * @param args
     */
     Frame Framework=new Frame ("AIT-Projekt");    //all diese objekte werden erzeugt aber
     TextField INPUT=new TextField ("Eingabe",20);   //sind nicht in den Frame eingefügt
     TextField OUTPUT=new TextField ("Ausgabe",40); //Framework.add(Spiegeln);<< das für
     JButton Spiegeln = new JButton ("Spiegeln");       //alle objekte im konstruktor schreiben..
     JButton Turn = new JButton ("Drehen");
     JButton Palindrom = new JButton ("Palindrom");
     JButton nicht = new JButton ("abc");   
    
     public static void main(String [] args) {
          new HelloWorld().main();  //das ist quatsch.. main() existiert nicht 
          }                                  // es existiert nur main(String[] args);
 
        // TODO Auto-generated method stub
     public HelloWorld() {
         super();   //macht der compiler automatisch braucht man hier nicht unbedingt selber coden
        
        Framework.setSize(340,180);
        Framework.setVisible(true);
        Framework.setAlwaysOnTop(true);
                
        INPUT.setBounds(10, 40, 195, 58);
        OUTPUT.setBounds(10, 107, 195, 58);        
        Spiegeln.setBounds(220, 40, 100, 35);        
        Palindrom.setBounds(220, 85, 100, 35);        
        Turn.setBounds(220, 130, 100, 35);
        nicht.setVisible(false);
        Spiegeln.setBackground(new Color(191, 207, 255)); 
        Turn.setBackground(new Color(191, 207, 255)); 
        Palindrom.setBackground(new Color(191, 207, 255)); 
        INPUT.setBackground(new Color(255, 247, 223));
        OUTPUT.setBackground(new Color(255, 247, 223));
        Framework.setBackground(new Color(221, 255, 187));
    }
 
}
```


----------



## Viewty-Fan (4. Jul 2010)

Danke funktioniert:toll::toll::toll:


----------



## Lexi (4. Jul 2010)

Genau aus solchen Gründen finde ich BlueJ ziemlich katastrophal, gerade wenn das an Schulen eingesetzt wird und die Lehrer selbst nicht mal wissen, wie das ganze richtig benutzt wird -.-


----------



## specialized (28. Jan 2012)

Hallo, kann mir vielleicht einer helfen??? ich bin ein absoluter noob in sachen Programmierung hab mir ein Handbuch zugelegt "Grundkurs Programmieren in JAVA" und arbeite jetzt mit Eclipse. Bei meiner letzten Übung kommt die o.g. Fehlermeldung


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

wäre echt dankbar :rtfm:


----------



## Final_Striker (28. Jan 2012)

Hast du beim Ausführen die richtige Klasse ausgewählt?


----------



## specialized (29. Jan 2012)

alles klar, hab die richtige klasse eingestellt jetzt funktionierts. DANKE:toll:


----------



## Farbenfroh (18. Feb 2014)

Hey!
Ich habe mir ein paar Beispielaufgaben + funktionsfähige Lösungen von der Website meiner Uni gezogen. Diese waren als zip verpackt und über File/Import/Archive File habe ich die einzelnen zip Dateien einem zuvor von mir erstellen Java Projekt namens "OOPM Praktikum" hinzugefügt. 

Ich habe die Lösungen nun schön übersichtlich in Unterordnern mit entsprechenden Namen. Immer wenn ich die Hauptklasse, also die mit der main Methode, einer der Lösungen ausführen möchte, kommt die Meldung von wegen "editor does not contain a main type".

Weiß da jemand eine Lösung?
Wenn ich den Code einfach in eine ganz neue Datei kopiere klappts aber das ist ziemlich nervig bei mehreren dutzend Dateien. Im Anhang ist nen Screenshot. Achja, ich rede hier von Eclipse.

Vielen Dank schon mal!

ps: Ich glaube es hat iwas damit zutun, dass die Lösungen nicht als Packages importiert wurden? Sehen mir aus wie ganz normale Ordner.


----------

