java.lang.veryixeRror на методе, который работал минуту назад

StackOverflow https://stackoverflow.com/questions/3019394

  •  26-09-2019
  •  | 
  •  

Вопрос

Заранее извиняюсь, но я никогда не видел эту ошибку раньше и не знаю, что включить. Я использую 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

Мне просто нужно знать, что вызывает ошибку и как это исправить. Спасибо!

Это было полезно?

Решение

А. VerifyError означает, что Bytecode недействителен, который указывает на проблему компилятора. Я бы попробовал восстановить все в надежде, что он уходит, но иначе вы должны подать ошибку. BYTECODE требуется для вызова конструктора SuperClass вручную через invokenonvirtual superclass/<init>()V, но вам не нужно добавлять super(); В источнике компилятор должен обрабатывать это

Другие советы

Я бы серьезно сомневаюсь, что это ошибка компилятора Java. Что-то подобное, скорее всего, было бы замечено кем-то другим и сообщили как ошибку. Но вы можете проверить это, перекомпилируя файл и используя javap разобрать байты. Ищите следующую инструкцию в коде конструктора:

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

Я думаю, что более вероятно, что что-то модифицирует байтекоды после Компилятор написал их. Возможности включают в себя некоторые профилировщики, которые изменяют байты для введения профилирования крюков, или некоторые процессоры аннотации, которые являются инъекционными зависимостями, точками среза и т. Д.

Это определенно проблема компилятора: генерируемый байткодом имеет другой двоичный формат.

Чтобы решить это: щелкните правой кнопкой мыши на проекте -> Свойства -> Источники -> Источник / двоичный формат

Измените его на любой формат подходит для вашего кода.

Просто попробуйте положить super() в начале вашего конструктора в качестве ошибок состояний.

Я думал, что это обычно выведено и добавлено без ограничений, чтобы написать его, возможно, суперкласс CostOperations нет пустого конструктора ..

Проверено: Compiler Bug.

Это случилось со мной в NetBeans. В NetBeans, когда вы пытаетесь скопировать файл .java в тот же каталог без "Refactor Copy", он помещает новый файл как «yourjavafile_1.java», и возникает проблема. Но если вы копируете этот файл с «Refactor Copy», проблем нет.

Это дает название как «YourJavafile1.java», но с рефакторингом.

I ОПИСАНИЕ МОЖЕТ БЫТЬ вызвано в результате в результате несоответствия спецификатора доступа класса / конструктора. Я только что решил подобную проблему, когда класс был объявлен спецификатором доступа к пакету, но его конструктор был объявлен публичным.

Просто сделать конструктор также иметь спецификатор доступа к пакету, решил проблему.

class Ngram{

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

    String ngram;
    int freq;
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top