2011-07-03 28 views
11

Recientemente hice un proyecto de Netbeans y estoy usando SVN junto con él. Estoy viendo el error de clase duplicado, y en la consola que dicemétodo debe llamar al error super() en 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

Aquí es 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"); 

      } 
     } 
    } 

} 

que he intentado:

  1. Limpiar y Reconstruir proyecto
  2. Asegurándome de haber llamado super en todos los constructores

¿Cómo se puede reparar? Code for download.

+0

¿Puede pasada mensaje de error completo? ¿Hay algún archivo, clase o información de línea? –

+0

@eyazici Incluí el mensaje de error en mi edición. Mire la información actualizada –

+1

@Andrew: el error que publicó parece un error de tiempo de ejecución. ¿Estás obteniendo errores de compilación? Publique detalles sobre el error de "clase duplicada" que ha mencionado. – Gabe

Respuesta

11

Vi estos síntomas el otro día.

Tenía un archivo que había estado editando y decidí que quería dividir mis cambios en 2 confirmaciones. Fui al directorio que contenía mi archivo "x/y/Z.java", hice un directorio en "x/y" llamado "copia de seguridad", moví "Z.java" allí y saqué una nueva copia del control de versión. Tenga en cuenta que todo esto se hizo fuera del IDE.

De vuelta en el IDE Me incorporé a los cambios para el primer commit y cuando lo construí recibí el mensaje de clase duplicado para "Z.java".

Cuando copié la fuente a "copia de seguridad", lo hice fuera del IDE y todavía tenía el paquete original "x.y" como lo hizo mi "Z.java" recién editado. NB no compilaría el nuevo "Z.java" porque podría ver que ya había creado "x.y.Z.class" (de "x/y/backup/Z.java").

Hay 2 maneras de solucionar este problema:

  1. Cambiar nombre "X/Y/backup/Z.java" a "x/y/copia de seguridad/Z.java.backup". (Impedir que se compile la copia de seguridad.)
  2. Cambie el paquete en "x/y/backup/Z.java" de "x.y" a "x.y.backup". (Haga que la copia de seguridad cree un archivo de clase diferente.)

Después de realizar cualquiera de estos cambios, realice una "limpieza y compilación". Nota: simplemente la construcción no solucionará el problema, debe realizar una limpieza para eliminar el archivo de clase deshonesto.

Nota: # 1 se hizo al cambiar el nombre Z.java de la línea de comandos, no dentro de NB. NB no te permitirá cambiar la extensión del archivo.

+0

Puedo confirmar que (a partir del 16/01/2012) esta solución no funciona (si alguna vez lo hizo), pero la respuesta de downeyt resolvió este problema para mí. –

+1

Puedo confirmar que (a partir del 10/07/2013) esta solución funciona perfectamente – manix

+0

¡Perfecto! sí, el misterioso mensaje de error tiene que ver con tener estas clases duplicadas. En mi caso, he borrado las copias de seguridad y todo está bien. –

12

Descubrí que el cambio de nombre del paquete no funcionaba, el paquete anterior todavía estaba allí.

El problema comenzó cuando copié un paquete de otra aplicación en la aplicación actual, que ya tenía un paquete con el mismo nombre. Estaba intentando agregar algunas clases faltantes al paquete. Después de que hice eso, el error comenzó.

Para resolverlo, eliminé todo el paquete de la aplicación web de destino e hice una limpieza y compilación. Luego copié el paquete de origen en la aplicación de destino. Sin errores.

+0

Gracias. Esto fue perfecto en –

+0

+1 Funciona para mí también. –

+0

la mejor y perfecta solución en realidad ... –

1

Si todavía tiene el problema, esto es cómo lo resolví ..

En mi caso he cambiado la clase con el método principal más tarde y la clase inicial todavía se hace referencia en el archivo proporties.

cambie ese ajuste, limpieza y construcción .. Funcionó para mí ...

2

Limpieza y construcción resuelve el problema

+0

FYI, Smoking_son ya ha mencionado esta información. –

0

En mi caso, tuve el mismo problema en una aplicación web después de hacer una copia externa de un POJO y editarlo manualmente fuera de NETBEANS. El problema en realidad era lo que los otros sugirieron en otras respuestas sobre un conflicto en los archivos ya compilados .class.

lo que hice para superar este fue sólo tiene que borrar la carpeta webAppname/WEB-INF/classes (donde residen las clases compiladas) y luego hacer una esperanza Clean and Build

esto ayude a alguien

Cuestiones relacionadas