繁体   English   中英

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

[英]method must call super() error in Netbeans

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

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

如何解决这个问题? 下载代码

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

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

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

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

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

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

当我将源代码复制到“备份”时,我是在 IDE 之外进行的,它仍然具有原始的 package “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”中的 package 从“xy”更改为“xybackup”。 (使备份创建一个不同的 class 文件。)

进行这些更改后,执行“清理并构建”。 注意:简单的构建不会解决问题,您需要执行清理以删除流氓 class 文件。

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

清洁和建筑解决了问题

如果您仍然有问题,这就是我解决它的方法..

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

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

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

我为克服这个问题所做的只是删除文件夹webAppname/WEB-INF/classes (编译的类所在的位置),然后执行Clean and Build

希望这可以帮助某人

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM