2011-07-03 29 views
11

Gần đây tôi đã thực hiện một dự án Netbeans và tôi đang sử dụng SVN cùng với nó. Tôi nhìn thấy lỗi lớp trùng lặp, và trong giao diện điều khiển nó nóiphải gọi super() lỗi trong 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

Đây là 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"); 

      } 
     } 
    } 

} 

Tôi đã thử:

  1. sạch và Rebuild dự án
  2. Đảm bảo rằng tôi đã gọi là siêu trong tất cả các nhà xây dựng

Làm cách nào để khắc phục sự cố này? Code for download.

+0

Can bạn qua thông báo lỗi đầy đủ? Có bất kỳ thông tin về tệp, lớp hoặc dòng nào không? –

+0

@eyazici Tôi đã bao gồm thông báo lỗi trong bản chỉnh sửa của mình. Vui lòng xem thông tin cập nhật –

+1

@Andrew: Lỗi bạn đã đăng trông giống như lỗi thời gian chạy. Bạn có gặp lỗi xây dựng không? Đăng chi tiết về lỗi "lớp trùng lặp" mà bạn đã đề cập. – Gabe

Trả lời

11

Tôi đã thấy các triệu chứng này chỉ vào một ngày khác.

Tôi có tệp tôi đã chỉnh sửa và quyết định tôi muốn chia các thay đổi của mình thành 2 lần commit. Tôi đã đi đến thư mục chứa tệp "x/y/Z.java" của tôi, tạo một thư mục trong "x/y" có tên là "sao lưu", đã di chuyển "Z.java" ở đó và kéo một bản sao mới từ kiểm soát phiên bản. Lưu ý tất cả điều này đã được thực hiện bên ngoài IDE.

Quay lại IDE Tôi đã hợp nhất các thay đổi cho lần commit đầu tiên và khi tôi xây dựng, tôi nhận được thông báo lớp trùng lặp cho "Z.java".

Khi tôi sao chép nguồn sang "sao lưu", tôi đã làm nó bên ngoài IDE và nó vẫn có gói gốc "x.y" cũng như "Z.java" mới được chỉnh sửa của tôi. NB sẽ không biên dịch "Z.java" mới vì nó có thể thấy nó đã tạo ra "x.y.Z.class" (từ "x/y/backup/Z.java").

Có 2 cách để sửa lỗi này:

  1. Rename "x/y/sao lưu/Z.java" thành "x/y/sao lưu/Z.java.backup". (Ngăn sao chép bản sao dự phòng.)
  2. Thay đổi gói trong "x/y/backup/Z.java" từ "x.y" thành "x.y.backup". (Tạo bản sao lưu tạo một tệp lớp khác.)

Sau khi thực hiện một trong các thay đổi này, hãy thực hiện "sạch và xây dựng". Lưu ý: chỉ đơn giản là xây dựng sẽ không khắc phục được sự cố, bạn cần thực hiện xóa sạch tệp lớp lừa đảo.

Lưu ý: # 1 được thực hiện bằng cách đổi tên Z.java từ dòng lệnh, không phải trong NB. NB sẽ không cho phép bạn thay đổi phần mở rộng tập tin.

+0

Tôi có thể xác nhận rằng (tính đến ngày 16/01/2012) giải pháp này không hoạt động (nếu nó đã từng làm) nhưng câu trả lời của downeyt giải quyết vấn đề này cho tôi. –

+1

Tôi có thể xác nhận rằng (tính đến ngày 10/07/2013) giải pháp này hoạt động hoàn hảo – manix

+0

Hoàn hảo! có thông báo lỗi bí ẩn phải làm với việc có các lớp trùng lặp này. Trong trường hợp của tôi, tôi đã xóa các bản sao lưu và tất cả đều ổn! –

12

Tôi thấy rằng đổi tên gói đã không hoạt động, gói cũ vẫn còn ở đó.

Sự cố cho tôi bắt đầu khi tôi sao chép một gói từ ứng dụng khác sang ứng dụng hiện tại, đã có gói có cùng tên. Tôi đã cố gắng thêm một số lớp học bị thiếu vào gói. Sau khi tôi đã làm điều đó, lỗi bắt đầu.

Để giải quyết, tôi đã xóa toàn bộ gói khỏi ứng dụng web mục tiêu và đã làm sạch và xây dựng. Sau đó, tôi đã sao chép gói nguồn vào ứng dụng đích. Không có lỗi.

+0

Cảm ơn. Đây là vị trí trên –

+0

+1 Hoạt động cho tôi. –

+0

giải pháp tốt nhất và hoàn hảo thực sự ... –

1

Nếu bạn vẫn còn có vấn đề, đây là cách tôi giải quyết nó ..

Trong trường hợp của tôi, tôi đã thay đổi lớp học với phương pháp chính sau và lớp ban đầu vẫn được tham chiếu trong tập tin proporties.

Thay đổi thiết lập rằng, sạch sẽ và xây dựng .. Nó làm việc cho tôi ...

2

Làm sạch và xây dựng giải quyết vấn đề

+0

FYI, Smoking_son đã đề cập chi tiết này. –

0

Trong trường hợp của tôi, tôi đã có cùng một vấn đề trong một ứng dụng Web sau khi thực hiện một bản sao bên ngoài của POJO và chỉnh sửa thủ công nó bên ngoài NETBEANS. Vấn đề thực sự là những gì người khác đề xuất trong các câu trả lời khác về xung đột trong các tệp .class đã biên dịch.

gì tôi đã làm để khắc phục điều này đã được chỉ đơn giản là xóa các thư mục webAppname/WEB-INF/classes (nơi các lớp học biên soạn cư trú) và sau đó làm một Hope Clean and Build

này sẽ giúp người

Các vấn đề liên quan