java.lang.NoSuchMethodError:main

时间:2011-03-23 14:35:54

标签: java eclipse

  

可能重复:
  Causes of 'java.lang.NoSuchMethodError: main Exception in thread “main”'

我收到以下错误:

java.lang.NoSuchMethodError:main 线程“main”中的异常

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;

public class SwimCalc extends JFrame implements ActionListener {
   private JTabbedPane jtabbedPane;
   private JPanel Customers;

   JTextArea NameTextCustomers, ExistTextCustomers, NameTextContractors,
         ExistTextContractors;

   public SwimCalc() {
      setTitle("Volume Calculator");
      setSize(300, 200);

      JPanel topPanel = new JPanel();
      topPanel.setLayout(new BorderLayout());
      getContentPane().add(topPanel);

      createCustomers();

      jtabbedPane = new JTabbedPane();
      jtabbedPane.addTab("Customers", Customers);
      topPanel.add(jtabbedPane, BorderLayout.CENTER);
   }

   /* CREATE CUSTOMERS */

   public JPanel createCustomers() {
      Customers = new JPanel();
      Customers.setLayout(null);

      NameTextCustomers = new JTextArea();
      NameTextCustomers.setBounds(10, 10, 350, 150);
      NameTextCustomers.setLineWrap(true);
      Customers.add(NameTextCustomers);

      JButton Exit = new JButton("Exit");
      Exit.setBounds(30, 170, 80, 20);
      Exit.addActionListener(this);
      Exit.setBackground(Color.white);
      Customers.add(Exit);

      JButton AddCustomers = new JButton("Add Customer");
      AddCustomers.setBounds(130, 170, 120, 20);
      AddCustomers.setBackground(Color.white);
      Customers.add(AddCustomers);

      JButton Refresh = new JButton("Refresh");
      Refresh.setBounds(260, 170, 80, 20);
      Refresh.setBackground(Color.white);
      Customers.add(Refresh);

      ExistTextCustomers = new JTextArea();
      ExistTextCustomers.setBounds(10, 200, 350, 60);
      ExistTextCustomers.setLineWrap(true);
      Customers.add(ExistTextCustomers);

      final JTextArea custArea = new JTextArea(6, 30);
      final JTextArea custMessage = null;

      AddCustomers.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            new Customer("Customer");
         }
      });
      Customers.add(custArea);
      Customers.add(AddCustomers);

      Customers.add(Refresh);
      Customers.add(custMessage);
      Refresh.setMnemonic('R');

      Refresh.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            custMessage.setText("");
            try {
               File custOpen = new File("customer.txt");
               FileReader custAreaIn = new FileReader(custOpen);
               custArea.read(custAreaIn, custOpen.toString());
               custMessage.setText("The file exists and can be read from.");
            } catch (IOException e3) {
               custMessage.setText("The file could not be read. "
                     + e3.getMessage());
            }
         }
      });
      return Customers;
   }

   class Customer extends JFrame {
      private String[] states = { "AL", "AK", "AZ", "AR", "CA", "CO", "CT",
            "DE", "FL", "GA", "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA",
            "ME", "MD", "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH",
            "NJ", "NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA", "RI", "SC",
            "SD", "TN", "TX", "UT", "VT", "VA", "WA", "WV", "WI", "WY" };
      private JComboBox StateList = new JComboBox(states);
      private JTextField NameText = new JTextField(25);
      private JTextField AddressText = new JTextField(25);
      private JTextField CityText = new JTextField(25);
      private JTextField ZipText = new JTextField(9);
      private JTextField PhoneText = new JTextField(10);
      private JTextField PopMessageText = new JTextField(30);
      private static final long serialVersionUID = 1L;

      private AddCustButtonHandler addCusHandler = new AddCustButtonHandler();

      public Customer(String who) {
         popUpWindow(who);
      }

      public void popUpWindow(final String who) {

         final JFrame popWindow;
         popWindow = new JFrame(who);
         popWindow.setSize(425, 350);
         popWindow.setLocation(100, 100);
         popWindow.setVisible(true);
         setDefaultCloseOperation(EXIT_ON_CLOSE);

         Container c = new Container();

         popWindow.add(c);

         c.setLayout(new FlowLayout());

         JPanel one = new JPanel();
         JPanel two = new JPanel();
         JPanel three = new JPanel();
         JPanel four = new JPanel();
         JPanel five = new JPanel();
         JPanel six = new JPanel();

         one.add(new JLabel(who + " Name "));
         one.add(NameText);
         two.add(new JLabel("Address "));
         two.add(AddressText);
         three.add(new JLabel("City "));
         three.add(CityText);
         four.add(new JLabel("State "));
         StateList.setSelectedIndex(0);
         four.add(StateList);
         four.add(new JLabel("ZIP"));
         four.add(ZipText);
         four.add(new JLabel("Phone"));
         four.add(PhoneText);
         JButton addwho = new JButton("Add " + who);
         addwho.setMnemonic('A');
         JButton close = new JButton("Close");
         close.setMnemonic('C');
         JButton deleteFile = new JButton("Delete File");
         deleteFile.setMnemonic('D');
         five.add(addwho);
         five.add(close);
         five.add(deleteFile);
         PopMessageText.setEditable(false);
         PopMessageText.setHorizontalAlignment(JTextField.CENTER);

         six.add(PopMessageText);
         c.add(one);
         c.add(two);
         c.add(three);
         c.add(four);
         c.add(five);
         c.add(six);

         deleteFile.setToolTipText("Delete File");
         addwho.setToolTipText("Add " + who);
         close.setToolTipText("Close");

         if (who == "Customer")
            addwho.addActionListener(addCusHandler);
         close.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
               NameText.setText("");
               AddressText.setText("");
               CityText.setText("");
               ZipText.setText("");
               PhoneText.setText("");
               PopMessageText.setText("");
               popWindow.dispose();
            }
         });
         deleteFile.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
               PopMessageText.setText("");
               if (who == "Customer") {
                  File file = new File("Customer.txt");
                  boolean cusFileDeleted = file.delete();
                  if (cusFileDeleted) {
                     PopMessageText.setText("Customer file has been deleted");
                  } else {
                     PopMessageText
                           .setText("There was an erron in deleting file");
                  }
               }
            }
         });
      }

      class AddCustButtonHandler implements ActionListener {
         public void actionPerformed(ActionEvent addCusHandler) {
            int StateIndex;
            try {
               File file = new File("Customer.txt");

               boolean success = file.createNewFile();

               if (success) {
                  PopMessageText
                        .setText("Customer.txt file created file added");
               } else if (file.canWrite()) {
                  PopMessageText
                        .setText("Writing data to Customer.txt, file added");
               } else {
                  PopMessageText.setText("Cannot create file: Customer.txt");
               }
               try {
                  FileWriter fileW = new FileWriter("Customer.txt", true);
                  fileW.write(NameText.getText());
                  fileW.write(",");
                  fileW.write(AddressText.getText());
                  fileW.write(",");
                  fileW.write(CityText.getText());
                  fileW.write(",");
                  StateIndex = StateList.getSelectedIndex();
                  fileW.write(states[StateIndex]);
                  fileW.write(",");
                  fileW.write(ZipText.getText());
                  fileW.write(",");
                  fileW.write(PhoneText.getText());
                  fileW.write("\r\n");
                  fileW.close();
                  PopMessageText.setText("A new Customer has been added!");

                  FileReader fileR = new FileReader("Customer.txt");
                  BufferedReader buffIn = new BufferedReader(fileR);

                  String textData = buffIn.readLine();
                  buffIn.close();
               } catch (IOException e1) {
                  JOptionPane.showMessageDialog(null, e1.getMessage(), "ERROR",
                        2);
               }
               NameText.setText("");
               AddressText.setText("");
               CityText.setText("");
               ZipText.setText("");
               PhoneText.setText("");
            } catch (IOException e1) {
            }

         }
      }

      public void actionPerformed(ActionEvent event) {
      }

      private void Exit_pressed() {
         System.exit(0);
      }

      public void main(String[] args) {
         JFrame frame = new SwimCalc();
         frame.setSize(380, 350);
         frame.setVisible(true);
      }
   }

   public void actionPerformed(ActionEvent e) {

   }
}

错误:

java.lang.NoSuchMethodError:main 线程“main”中的异常

public void actionPerformed(ActionEvent e) {

    }
    public static void main(String[] args){
        JFrame frame = new SwimCalc();
        frame.setSize(380, 350);
        frame.setVisible(true);
        }
    }

8 个答案:

答案 0 :(得分:7)

main需要是静态方法。

public static void main(String[] args){
   JFrame frame = new SwimCalc();
   frame.setSize(380, 350);
   frame.setVisible(true);
}

此外,main方法应该在SwimCalc类或其他一些顶级类中。将方法移动到SwimCalc类(不在Customer类中)并使用java SwimCalc来调用它。您不能在内部类中声明main

答案 1 :(得分:2)

看来您的main方法实际上是 你的actionPerformed方法。你显然不能这样做。声明需要在您的SwimCalc课程中。那种疯狂是你试图运行的实际代码吗?你到处都有括号和流浪的括号,没有缩进;如果你只是清理你的代码,问题会更容易找到。

public void main(String[] args){

应该是

public static void main(String[] args){

还有这样的废话:} );。你有很多语法错误...

答案 2 :(得分:2)

是签名应该是

public static void main(String[] args)

即使错过了args,eclipse也会抛出此错误。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

主要方法必须是公共静态

public static void main(String[] args)

答案 5 :(得分:0)

main()必须是静态的。完整的签名是:

public static void main(String[] args)

答案 6 :(得分:0)

应该是

public static void main(String[] args){

而不是public void main ...

答案 7 :(得分:0)

您的主要方法需要是静态的。这应该是签名:

public static void main(String[] args)