Извинения заранее, но я никогда не видел эту ошибку прежде и не знаю, что включать. Я использую 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)
У меня нет подсказки, что произошло. Я даже не изменил market/CostOperations.
Вот конструктор хотя:
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
Я просто должен знать то, что вызывает ошибку и как зафиксировать ее.Спасибо!
A VerifyError
означает, что байткод недействителен, что указывает на проблему компилятора. Я бы попробовал все пересобрать в надежде, что ошибка исчезнет, но в противном случае вам следует зарегистрировать ошибку. Байткод необходим для вызова конструктора суперкласса вручную через invokenonvirtual superclass/
, но вам не нужно добавлять super();
в исходник, компилятор должен справиться с этим
Я бы сильно сомневался, что это ошибка компилятора Java. Скорее всего, что-то подобное было бы замечено кем-то другим и сообщено как ошибка. Но вы можете проверить это, перекомпилировав файл и используя javap
для разборки байткодов. Найдите в коде конструктора следующую инструкцию:
invokespecial #1 <Method java.lang.Object()>
Я думаю, более вероятно, что что-то изменяет байткоды после того, как компилятор их написал. Возможные варианты: какой-то профилировщик, который модифицирует байткоды, чтобы внедрить крючки профилирования, или какой-то обработчик аннотаций, который внедряет зависимости, точки отсечения и т.д.
Просто попробуйте поместить super ()
в начало вашего конструктора, как указано в сообщении об ошибке.
Я думал, что это обычно подразумевается и добавляется без ограничений для записи, возможно, в суперклассе CostOperations
нет пустого конструктора ..