方法必须在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"); } } } }
我努力了:
- 清理和重建项目
- 确保我在所有构造函数中都调用了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”)。
有两种方法可以解决这个问题:
- 将“x / y / backup / Z.java”重命名为“x / y / backup / Z.java.backup”。 (防止编译备份副本。)
- 将“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
希望这有助于某人