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

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

java.lang.VerifyError: (class: pie/chart/explorer/PieChartExplorer, method: 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

怎么解决这个问题? 代码下载 。

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

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

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

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

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

  1. 将“x / y / backup / Z.java”重命名为“x / y / backup / Z.java.backup”。 (防止编译备份副本。)
  2. 将“x / y / backup / Z.java”中的包从“xy”更改为“xybackup”。 (使备份创建一个不同的类文件。)

完成其中任何一项更改后,执行“清理并构建”。 注意:简单构建不会解决问题,需要执行干净删除流氓类文件。

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

我发现重命名包不起作用,旧的包仍然存在。

当我将一个包从另一个应用程序复制到当前应用程序时,问题就出现了,当前应用程序已经有了一个具有相同名称的包。 我试图在包中添加一些缺少的类。 在我这样做之后,错误开始了。

为了解决这个问题,我从目标Web应用程序中删除了整个包,并进行了清理和构建。 然后我将源包复制到目标应用程序中。 没有错误。

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

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

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

改变那个设置,清理和构建..它对我有用…

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

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

希望这有助于某人