2011-07-03 13 views
11

Niedawno zrobiłem projekt Netbeans i używam SVN wraz z nim. Widzę błąd duplikat klasy, aw konsoli mówimetoda musi wywołać super() błąd w 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

Oto 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"); 

      } 
     } 
    } 

} 

Próbowałem:

  1. Czyste i Odbuduj projekt
  2. Upewnij się, że nazwałem super we wszystkich konstruktorach

Jak można to naprawić? Code for download.

+0

Czy jesteś przeszłości pełny komunikat o błędzie? Czy są jakieś informacje o pliku, klasie lub linii? –

+0

@eyazici Zawarłem tam komunikat o błędzie w mojej edycji. Proszę spojrzeć na zaktualizowane informacje –

+1

@Andrew: Wystąpił błąd wygląda na błąd w czasie wykonywania. Czy pojawiają się błędy kompilacji? Prześlij szczegółowe informacje o błędzie "zduplikowanej klasy", o której wspomniałeś. – Gabe

Odpowiedz

11

Widziałem te symptomy tylko na drugi dzień.

Miałem plik, który edytowałem i zdecydowałem, że chcę podzielić moje zmiany na 2 zatwierdzenia. Poszedłem do katalogu zawierającego mój plik "x/y/Z.java", utworzyłem katalog w "x/y" o nazwie "backup", przeniosłem tam "Z.java" i ściągnąłem świeżą kopię z kontroli wersji. Uwaga wszystko to zostało zrobione poza IDE.

Powrót w IDE Połączyłem się w zmianach dla pierwszego zatwierdzenia, a po zbudowaniu otrzymałem wiadomość o duplikacie klasy dla "Z.java".

Kiedy skopiowałem źródło do "kopii zapasowej", zrobiłem to poza IDE i nadal miałem oryginalny pakiet "x.y", podobnie jak mój nowo zredagowany "Z.java". NB nie skompilowałoby nowego "Z.java", ponieważ mogło zobaczyć, że utworzyło już "x.y.Z.class" (z "x/y/backup/Z.java").

Istnieją 2 sposoby, aby to naprawić:

  1. Zmień nazwę "x/y/backup/Z.java" na "x/y/backup/Z.java.backup". (Zapobieganie kompilacji kopii zapasowej).
  2. Zmień pakiet w "x/y/backup/Z.java" z "x.y" na "x.y.backup". (Utwórz kopię zapasową, aby utworzyć inny plik klasy).

Po wprowadzeniu jednej z tych zmian, wykonaj "oczyść i zbuduj". Uwaga: po prostu budynek nie rozwiąże problemu, musisz wyczyścić, aby usunąć plik klasy zbójeckiej.

Uwaga: # 1 zostało wykonane poprzez zmianę nazwy Z.java z wiersza poleceń, a nie wewnątrz NB. NB nie pozwoli ci zmienić rozszerzenia pliku.

+0

Mogę potwierdzić, że (stan na 16/01/2012) to rozwiązanie nie działa (jeśli kiedykolwiek tak było), ale odpowiedź downeyt rozwiązała dla mnie ten problem. –

+1

Mogę potwierdzić, że (stan na 10/07/2013) to rozwiązanie działa idealnie – manix

+0

Idealnie! tak, tajemniczy komunikat o błędzie ma związek z posiadaniem tych zduplikowanych klas. W moim przypadku usunąłem kopie zapasowe i wszystko w porządku! –

12

Okazało się, że zmiana nazwy pakietu nie działa, stary pakiet nadal tam był.

Problem zaczął się, gdy skopiowałem paczkę z innej aplikacji do bieżącej aplikacji, która już miała paczkę o tej samej nazwie. Próbowałem dodać kilka brakujących klas do pakietu. Po tym wystąpił błąd.

Aby rozwiązać ten problem, usunąłem cały pakiet z docelowej aplikacji internetowej i wyczyściłem go i kompilowałem. Następnie skopiowałem pakiet źródłowy do docelowej aplikacji. Bez błędów.

+0

Dzięki. To było na miejscu –

+0

+1 Działa również dla mnie. –

+0

najlepsze i idealne rozwiązanie ... –

1

Jeśli nadal masz problem, to jak mogę rozwiązać go ..

W moim przypadku zmieniłem klasę z metodą głównej później i początkowa klasa wciąż odwołuje się do pliku proporties.

zmienić to ustawienie, czyste i budować .. To pracował dla mnie ...

2

chemiczna i budowlana rozwiązuje problem

+0

FYI, Smoking_son już wspomniał o tych szczegółach. –

0

W moim przypadku, miałem ten sam problem w aplikacji internetowej po dokonaniu zewnętrzna kopia POJO i ręczna edycja poza NETBEANS. Problem polegał na tym, co inni sugerowali w innych odpowiedziach na temat konfliktu w już skompilowanych plikach .class.

co zrobiłem do pokonania to po prostu usuń folder webAppname/WEB-INF/classes (gdzie skompilowane klasy pobytu), a następnie zrobić Clean and Build

nadzieję, że pomoże komuś

Powiązane problemy