我有这个代码。 Eclipse告诉我语法是正确的但是当我运行程序时它会给我这个错误:
线程“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);
}
}
答案 0 :(得分:4)
您的主要方法是不 static
,您应该将其设为static
。 Check this了解原因
public static void main(String [] args)
答案 1 :(得分:2)
您的主要方法应为static
public static void main(String[] args){
----
}
答案 2 :(得分:1)
该类需要一个签名为:
的方法public static void main(String[])
答案 3 :(得分:1)
你必须让你的主要方法是静态的:
public static void main(String[] args) {
}
答案 4 :(得分:1)
public static void main(String[] args)
而不是
public void main(String[] args)
public
表示该方法可见,可以从其他类型的其他对象调用。其他替代方案是私有,受保护,包和私有。有关详细信息,请参见此处。
static
表示该方法与该类相关联,而不是该类的特定实例(对象)。这意味着您可以在不创建类的对象的情况下调用静态方法。
void
表示该方法没有返回值。如果方法返回一个int,你会写int而不是void。
所有这三个方面的组合最常见于大多数教程将包含的主要方法。
答案 5 :(得分:0)
你的main方法必须是静态的(即类绑定而非实例绑定),因为在启动你的应用程序时,没有可以调用你的类的主方法的类实例。
答案 6 :(得分:0)
该类需要一个签名如下的方法:
public static void main(String[])