2013-07-22 52 views
0

我有這段代碼。 Eclipse告訴我的語法是正確的,但是當我運行該程序時,它給了我這個錯誤:我該如何解決線程「main」java.lang.NoSuchMethodError中的異常:main

Exception in thread "main" java.lang.NoSuchMethodError: main

怎麼了?

import java.awt.Color; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 

public class Main extends JFrame { 

    private static final long serialVersionUID = 1L; 
    public void main(String[] args){ 
     JFrame Main = new JFrame("TEST"); 
     Main.setSize(600, 600); 
     Main.setLocationRelativeTo(null); 
     Main.setVisible(true); 
     Main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

//Adding JPanel  
     JPanel panel = new JPanel(); 
     Main.add(panel); 
//JPanel settings 
     panel.setLayout(null); 
     panel.setBackground(Color.GREEN); 
//Adding JButton 
     JButton button = new JButton("Button 1"); 
     JButton button2 = new JButton("Button2"); 
     panel.add(button); 
     panel.add(button2); 
//Button action 
     button.addActionListener(new ActionListener(){ 
    public void actionPerformed(ActionEvent e) { 
     JPanel panel = new JPanel(); 
     JPanel panel2 = new JPanel(); 
     Main.this.getContentPane().remove(panel); 
     Main.this.getContentPane().add(panel2); 
     Main.this.getContentPane().validate();  
    } 
}); 

//JButton settings 
     button.setBounds(70, 160, 200, 200); 
     button2.setBounds(320, 160, 200, 200); 
    } 
} 
+3

請寫** **我,而不是我** **當它是你,而不是變量。 – Maroun

回答

4

你的主要方法是static,你應該讓staticCheck this明白爲什麼

public static void main(String [] args) 
1

類需要用一個簽名的方法:

public static void main(String[]) 
1

你必須讓你的主要方法靜態:

public static void main(String[] args) { 

} 
1

,而不是

public void main(String[] args) 

public意味着該方法是可見的,並且可以從其他類型的其他對象中調用。其他選擇是私有的,受保護的,包和包私有的。詳情請看這裏。

static意味着該方法與類關聯,而不是該類的特定實例(對象)。這意味着您可以調用靜態方法而不創建類的對象。

void表示該方法沒有返回值。如果該方法返回一個int,則可以寫入int而不是void。

所有這三個組合都是大多數教程將包含的主要方法中最常見的組合。

2

你的主要方法應該是static

public static void main(String[] args){ 
    ---- 

} 

,看看爲什麼? Why is the Java main method static?

+1

爲鏈接+1爲什麼Java的主要方法是靜態的?(y) –

+0

但是,如果我改變了「靜態」,Main.this.getContentPane ...給了我「沒有封閉的類型實例Main在範圍內可以訪問「錯誤 – user2592584

+0

您不能在靜態上下文中使用'this'':更喜歡閱讀http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html –

0

您的主要方法必須是靜態的(即,類綁定不是實例綁定的),因爲在啓動應用程序時,沒有可調用類的主方法的類實例。

0

類需要的方法使用的是這樣的簽名:

public static void main(String[]) 
相關問題