方法必须在Netbeans中调用super()错误

时间:2011-07-03 03:45:30

标签: java swing netbeans charts superclass

最近我做了一个Netbeans项目,我正在使用SVN。我看到重复的类错误,并在控制台中说

java.lang.VerifyError: (class: pie/chart/explorer/PieChartExplorer, method: <init> signature: ()V) Constructor must call super() or this()
Could not find the main class: pie.chart.explorer.PieChartExplorer. Program will exit.
Exception in thread "main" Java Result: 1

这是PieChartExplorer.java:

package pie.chart.explorer;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class PieChartExplorer extends JFrame implements ActionListener {


    JTextField one = new JTextField(10);
     JTextField two = new JTextField(10);
      JTextField three = new JTextField(10);
    JButton sub = new JButton("Click to be amazed");


    public PieChartExplorer() {
        super("Pie Chart Explorer");
        setSize(300,100);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        FlowLayout flo = new FlowLayout();
        setLayout(flo);
        setVisible(true);
        add(one);
        add(two);
        add(three);
        sub.addActionListener(this);;
        add(sub);

    }

    public static void main(String[] args) {
        PieChartExplorer app = new PieChartExplorer();
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        Object source = e.getSource();

        if(source == sub) {
            try {
            Pie show = new Pie(Float.parseFloat(one.getText()),Float.parseFloat(two.getText()),Float.parseFloat(three.getText()));
            } catch(Exception ex) {
                JOptionPane.showMessageDialog(this, "Please check entered data");

            }
        }
    }

}

我试过了:

  1. 清理并重建项目
  2. 确保我在所有构造函数中调用了super
  3. 如何解决这个问题? Code for download

4 个答案:

答案 0 :(得分:11)

我前几天看到了这些症状。

我有我编辑的文件,我决定将我的更改分成2个提交。我去了包含我的文件“x / y / Z.java”的目录,在“x / y”中创建了一个名为“backup”的目录,在那里移动了“Z.java”,并从版本控制中提取了一个新的副本。 注意所有这些都是在IDE之外完成的。

回到IDE中我合并了第一次提交的更改,当我构建时,我得到了“Z.java”的重复类消息。

当我将源复制到“备份”时,我在IDE之外完成了它,它仍然有原始包“x.y”,就像我新编辑的“Z.java”一样。 NB不会编译新的“Z.java”,因为它可以看到它已经创建了“x.y.Z.class”(来自“x / y / backup / Z.java”)。

有两种方法可以解决这个问题:

  1. 将“x / y / backup / Z.java”重命名为“x / y / backup / Z.java.backup”。 (防止编译备份副本。)
  2. 将“x / y / backup / Z.java”中的包从“x.y”更改为“x.y.backup”。 (使备份创建一个不同的类文件。)
  3. 完成上述任一更改后,执行“清理并构建”。 注意:简单构建不会解决问题,需要执行干净删除流氓类文件。

    注意:#1是通过从命令行重命名Z.java而不是在NB中完成的。 NB不允许您更改文件扩展名。

答案 1 :(得分:2)

清洁和建筑解决了这个问题

答案 2 :(得分:1)

如果你还有问题,这就是我解决它的方法..

在我的情况下,我稍后使用main方法更改了类,并且仍然在比例文件中引用了初始类。

更改该设置,清理并构建..它对我有用...

答案 3 :(得分:0)

就我而言,在制作POJO的外部副本并在NETBEANS外部手动编辑后,我在Web应用程序中遇到了同样的问题。问题实际上是其他人在其他答案中建议的已编译的.class文件中的冲突。

我要做的就是删除文件夹webAppname/WEB-INF/classes(编译类所在的文件夹),然后执行Clean and Build

希望这有助于某人