2011-07-03 27 views
11

最近我做了一個NetBeans項目,我與它一起使用SVN。我看到重複類錯誤,並在控制檯它說方法必須調用超()錯誤Netbeans的

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. 確保我已在所有構造函數中調用超級模塊

這怎麼解決? Code for download

+0

你能過去完整的錯誤消息?是否有任何文件,班級或線路信息? –

+0

@eyazici我包括那裏的錯誤消息在我的編輯。請查看更新信息 –

+1

@Andrew:您發佈的錯誤看起來像是運行時錯誤。你是否有構建錯誤?發佈您提到的「重複類」錯誤的詳細信息。 – Gabe

回答

11

我看到了這些症狀,就在幾天前。

我有我的文件,我已編輯和決定,我想我的變化分爲2次的提交。我去了包含我的文件「x/y/Z.java」的目錄,在名爲「backup」的「x/y」中創建了一個目錄,在那裏移動了「Z.java」,並從版本控制中提取了新的副本。 注意所有這些都是在IDE之外完成的。

返回到IDE我合併了第一次提交的更改,當我構建時,我得到了「Z.java」的重複類消息。

當我複製源「備份」我做到了IDE之外,它仍然有原始的包「xy格式」象我的新編輯「Z.java」。 NB不會編譯新的「Z.java」,因爲它可能已經創建了「x.y.Z.class」(來自「x/y/backup/Z.java」)。

有2種方法來解決這個問題:

  1. 重命名 「X/Y /備份/ Z.java」 到 「X/Y /備份/ Z.java.backup」。從 「x.y格式」(來自被編譯防止備份副本。)
  2. 變化 「X/Y /備份/ Z.java」 程序包 「x.y.backup」。 (使備份創建不同的類文件。)

做出這些更改後,執行「清理並構建」。 注意:簡單的建設不會解決問題,你需要執行一個乾淨的移除流氓類文件。

注:#1,通過在命令行重命名Z.java,不在NB完成。 NB不會讓你改變文件擴展名。

+0

我可以確認(截至2012年1月16日)此解決方案無效(如果它曾經)但downeyt的答案爲我解決了這個問題。 –

+1

我可以確認(截至10/07/2013)此解決方案完美工作 – manix

+0

完美!是的,神祕的錯誤信息與這些重複的類有關。在我的情況下,我刪除了備份,一切正常! –

12

我發現,重命名包沒有工作,老包仍然存在。

對我來說,問題開始時,我複製從另一個應用程序包到當前的應用程序,它已經與相同名稱的包。我試圖在包中添加一些缺失的類。我這樣做後,錯誤開始了。

要解決這個問題,我從目標Web應用程序中刪除整個包,做了清理並生成。然後我將源代碼包複製到目標應用程序中。沒有錯誤。

+0

謝謝。這是 –

+0

+1也適用於我。 –

+0

實際上最好的和完美的解決方案... –

1

如果您仍然有問題,這是我如何解決它..

在我來說,我後來改變與main方法的類和最初的類在proporties文件仍然被引用。

更改該設置,清理並生成..它的工作對我來說...

2

清潔和建築解決問題

+0

僅供參考,Smoking_son已經提到這個細節。 –

0

就我而言,我曾在一個Web應用程序相同的問題作出的後POJO的外部副本並在NETBEANS之外手動編輯它。這個問題實際上是其他人在其他答案中對已編譯的.class文件中的衝突提出的建議。

我做了什麼來克服這一簡單地刪除該文件夾webAppname/WEB-INF/classes(其中編譯的類駐留),然後做一個Clean and Build

希望這可以幫助別人

相關問題