java.lang.NoSuchMethodError: main [duplicate]
Possible Duplicate:
Causes of 'java.lang.NoSuchMethodError: main Exception in thread “main”'
I'm getting the following error:
java.lang.NoSuchMethodError: main Exception in thread "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 FileReade开发者_如何学Cr("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) {
}
}
The error:
java.lang.NoSuchMethodError: main Exception in thread "main"
public void actionPerformed(ActionEvent e) {
}
public static void main(String[] args){
JFrame frame = new SwimCalc();
frame.setSize(380, 350);
frame.setVisible(true);
}
}
main
needs to be a static method.
public static void main(String[] args){
JFrame frame = new SwimCalc();
frame.setSize(380, 350);
frame.setVisible(true);
}
Also, the main
method should be in the SwimCalc
class or some other top-level class. Move the method to be within the SwimCalc
class (not in your Customer
class) and use java SwimCalc
to invoke it. You can't declare main
in an inner class.
It looks your main
method is actually inside your actionPerformed
method. You obviously cannot do this. The declaration needs to be in your SwimCalc
class. Is that craziness your actual code that you are trying to run? You've got braces and stray parentheses all over the place, no indentation; if you just clean up your code the problem will be a lot easier to find.
and
public void main(String[] args){
should be
public static void main(String[] args){
There's also nonsense like this: } );
. You have so many syntax errors...
Yes the signature should be
public static void main(String[] args)
Even if the args is missed eclipse throws this error.
public **static** void main(String[] args){
Main method must be public static
public static void main(String[] args)
main()
must be static. The complete signature is:
public static void main(String[] args)
You main method needs to be static. This should be the signature:
public static void main(String[] args)
It should be
public static void main(String[] args){
instead of public void main
...
精彩评论