7

提前道歉,但我以前从未见过这个错误,也不知道要包括什么。我正在使用 NetBeans,突然开始出现此错误:

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)

我不知道发生了什么。我什至没有修改市场/成本运营。

这是构造函数:

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();

    }

在调试模式下,我得到这个:

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

我只需要知道导致错误的原因以及如何解决它。谢谢!

4

7 回答 7

9

AVerifyError表示字节码无效,表示编译器有问题。我会尝试重建一切,希望它消失,否则你应该提交一个错误。字节码需要通过手动调用超类构造函数invokenonvirtual superclass/<init>()V,但您不需要添加super();源代码,编译器应该处理

于 2010-06-11T00:10:27.853 回答
1

我会严重怀疑这是一个 Java 编译器错误。这样的事情很可能会被其他人注意到并报告为错误。但是您可以通过重新编译文件并使用javap反汇编字节码来验证这一点。在构造函数代码中查找以下指令:

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

我认为更有可能是在编译器编写完字节码之后,某些东西正在修改它们。可能性包括一些分析器正在修改字节码以注入分析钩子,或者一些注释处理器正在注入依赖项、切点等。

于 2010-06-11T00:59:32.677 回答
1

这绝对是编译器问题:生成的字节码具有不同的二进制格式。

要解决这个问题:右键单击项目 -> 属性 -> 源 -> 源/二进制格式

将其更改为适合您的代码的任何格式。

于 2012-11-05T14:29:50.947 回答
0

只需尝试将 asuper()作为错误状态放在构造函数的开头即可。

我认为它通常是在没有约束的情况下推断和添加的,也许它的超类CostOperations没有任何空的构造函数..

于 2010-06-11T00:07:19.603 回答
0

已验证:编译器错误。

于 2010-06-11T00:18:42.440 回答
0

这在 Netbeans 中发生在我身上。在 netbeans 中,当您尝试在没有“重构副本”的情况下复制同一目录中的 .java 文件时,它将新文件放置为“YourJavaFile_1.java”并出现问题。但是,如果您使用“重构副本”复制该文件,则没有问题。

它将名称命名为“YourJavaFile1.java”,但进行了重构。

于 2013-11-07T07:33:08.973 回答
-2

我认为这可能是由于类/构造函数访问说明符不匹配造成的。我刚刚解决了一个类似的问题,其中类是使用包访问说明符声明的,但它的构造函数被声明为公共的。

简单地使构造函数也有一个包访问说明符解决了这个问题。

class Ngram{

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

    String ngram;
    int freq;
}
于 2013-04-29T12:53:58.650 回答