Pregunta

Disculpas por adelantado, pero nunca he visto este error antes y no sabe qué incluir. Estoy usando NetBeans y de pronto comenzó a recibir este error:

Exception in thread "AWT-EventQueue-0" java.lang.VerifyError: (class: market/CostOperations, method: <init> signature: ()V) Constructor must call super() or this()
            at Bluebuild.Main.refreshTables(Main.java:748)
            at Bluebuild.Main.formComponentShown(Main.java:649)
            at Bluebuild.Main.access$100(Main.java:28)
            at Bluebuild.Main$2.componentShown(Main.java:374)
            at java.awt.Component.processComponentEvent(Component.java:6095)
            at java.awt.Component.processEvent(Component.java:6043)
            at java.awt.Container.processEvent(Container.java:2041)
            at java.awt.Window.processEvent(Window.java:1836)
            at java.awt.Component.dispatchEventImpl(Component.java:4630)
            at java.awt.Container.dispatchEventImpl(Container.java:2099)
            at java.awt.Window.dispatchEventImpl(Window.java:2478)
            at java.awt.Component.dispatchEvent(Component.java:4460)
            at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
            at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
            at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
            at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

No tengo ni idea de lo que pasó. Ni siquiera me modifico mercado / CostOperations.

Aquí está el constructor sin embargo:

public CostOperations() throws ParserConfigurationException, SAXException, IOException {

        //Open the xml file
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        f = new File(dbName);
        doc = builder.parse(f);
        System.out.println(f.canWrite());

        //Create the XPath
        XPathFactory xpfactory = XPathFactory.newInstance();
        path = xpfactory.newXPath();

    }

En el modo de depuración me sale esto:

debug:
Have no FileObject for C:\Program Files (x86)\Java\jdk1.6.0_20\jre\lib\sunrsasign.jar
Have no FileObject for C:\Program Files (x86)\Java\jdk1.6.0_20\jre\classes

Sólo necesito saber qué está causando el error y cómo solucionarlo. Gracias!

¿Fue útil?

Solución

Se refiere a una VerifyError el código de bytes no es válida, el cual apunta a un problema del compilador. Me gustaría tratar de reconstruir todo con la esperanza de que se vaya, pero por lo demás se debería informar de un problema. El código de bytes es necesario llamar al constructor de la superclase de forma manual a través de invokenonvirtual superclass/<init>()V, pero que no es necesario añadir super(); en la fuente, el compilador debe manejar eso

Otros consejos

Me serias dudas de que se trata de un error del compilador de Java. Algo así como que probablemente habría sido notado por otra persona y reportado como un error. Pero se puede verificar esto al volver a compilar el archivo y utilizando javap desmontar el código de bytes. Busque el la siguiente instrucción en el código constructor:

    invokespecial #1 <Method java.lang.Object()>

Creo que es más probable que algo está modificando el código de bytes después el compilador ha escrito ellos. Las posibilidades incluyen algunos perfiles que está modificando los bytecodes para inyectar perfiles de ganchos, o algún procesador de anotación que está inyectando dependencias, puntos de corte, etc.

En definitiva, es un problema de compilador:. El bytecode generado tiene un formato binario diferente

Para resolver esto: Haz clic derecho en el proyecto -> Propiedades -> Fuentes -> Fuente / formato binario

Cambiar a cualquier formato que sea adecuado a su código.

Sólo trate de poner un super() al comienzo de su constructor como los estados de error.

pensé que por lo general se infiere y ha añadido sin la limitación de escribir, tal vez la superclase de CostOperations no tiene ningún constructor vacío ..

verificado:. Compilador Bug

Esto me sucedió en Netbeans. En NetBeans, cuando intenta copiar un archivo .java en el mismo directorio y sin "copia refactor", se coloca el nuevo archivo como "YourJavaFile_1.java" y occures problemas. Pero si copia el archivo con "copia refactor", no hay ningún problema.

Se da el nombre de "YourJavaFile1.java", pero con la refactorización.

Me opine que puede ser causada como resultado de la clase / constructor desajuste especificador de acceso. Me acaba de resolver un problema similar donde la clase se declaró con un modificador de acceso paquete, pero su constructor fui declarado pública.

Simplemente, hacer el constructor también tiene un especificador de acceso de paquete resuelto el problema.

class Ngram{

    public Ngram(String str, int count){
        ngram = str;
        freq = count;
    }

    String ngram;
    int freq;
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top