【问题标题】:"Main Method not Public" - Error message when trying to run program on Eclipse“Main Method not Public” - 尝试在 Eclipse 上运行程序时出现错误消息
【发布时间】:2013-04-06 15:08:20
【问题描述】:

这是我在 Eclipse 上使用的代码,我不明白我哪里出错了。我是Java初学者,所以我对这个主题不太熟悉。任何帮助将非常感激。当我尝试通过运行程序查看我已经走了多远时,错误总是出现,请缓解计算机术语,我是这个lol的新手。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.LineBorder;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.BorderLayout;

public class CBombRombot extends JFrame implements ActionListener, ChangeListener {

    private JPanel panel;
    private JPanel bottompanel;
    private JPanel rightpanel;

    private static void main(String[] args) {
        CBombRombot frame = new CBombRombot();
        frame.setTitle("CBombRobot Application");
        frame.setSize(875, 550);
        frame.show();
        frame.setResizable(false);
        frame.setLocationRelativeTo(null);
    }

    private void createGUI() {
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        Container window = getContentPane();
        window.setLayout(new BorderLayout());

        panel = new JPanel();
        panel.setPreferredSize(new Dimension(650, 450));
        panel.setBackground(Color.white);
        window.add(panel);

        rightpanel = new JPanel();
        rightpanel.setPreferredSize(new Dimension(200, 180));
        rightpanel.setBackground(Color.lightGray);
        window.add(rightpanel, BorderLayout.EAST);

        bottompanel = new JPanel();
        bottompanel.setPreferredSize(new Dimension(400, 50));
        bottompanel.setBackground(Color.lightGray);
        window.add(bottompanel, BorderLayout.SOUTH);
    }

    @Override
    public void stateChanged(ChangeEvent arg0) {
        // TODO Auto-generated method stub
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
    }

}

【问题讨论】:

  • 我希望所有错误信息都一样清晰具体。
  • @NPE - 你在这里可能有点太微妙了 :-)

标签: java class main


【解决方案1】:

嗯,你的主要方法需要公开:

public static void main(String[] args)

看看那里的一些教程,例如this

在 Java 语言中,当您使用 Java 解释器执行一个类时,运行时系统通过调用该类的 main() 方法启动。然后 main() 方法调用运行应用程序所需的所有其他方法。

或官方Oracle tutorial

在 Java 编程语言中,每个应用程序都必须包含一个 main 方法,其签名为:public static void main(String[] args)

【讨论】:

  • 感谢您的帮助,但现在我添加的面板都没有显示在程序中
  • 然后我建议你去学习一些挥杆教程。
  • @tundemaster 那是另一回事。我建议你accept an answer,对 Swing 做一些研究。如果您仍有问题,您可以发布另一个问题
  • 是的,在我接受答案之前还有倒计时,谢谢你的帮助,我会看看那些教程
【解决方案2】:

您需要将 main 方法声明为 public static void。原因如下:

  • Public - JVM 调用 main 方法来运行该方法 在项目范围之外,因此访问说明符必须是 public 允许从应用程序之外的任何地方调用
  • 静态 - 当 JVM 调用 main 方法时,没有 为被调用的类而存在的对象,因此它必须具有 允许从类调用的静态方法。
  • void - Java 是独立于平台的语言,因此如果它愿意 返回一些值然后该值可能意味着不同 平台与 C 不同,它不能假设返回值的行为 到操作系统。

参考:Why main() in java is public static void main

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-30
    • 1970-01-01
    相关资源
    最近更新 更多