2010-06-11 14 views
7

अग्रिम में माफ़ी, लेकिन मैंने पहले कभी यह त्रुटि नहीं देखी है और यह नहीं पता कि इसमें क्या शामिल होना है। मैं नेटबीन का उपयोग कर रहा हूं और अचानक यह त्रुटि प्राप्त करना शुरू कर दिया:java.lang.VerifyError जिस विधि ने एक मिनट पहले काम किया था

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) 

मेरे पास कोई सुराग नहीं है। मैंने बाजार/लागत औपचारिकताओं को भी संशोधित नहीं किया।

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 

मैं सिर्फ पता है कि त्रुटि पैदा और इसे ठीक करने के लिए किया जाता है की जरूरत है:

यहाँ निर्माता हालांकि बताया गया है:

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

    } 

डिबग मोड में मैं इस मिलता है। धन्यवाद!

+0

किसी भी मौके से ऐसा हुआ जब आप कुछ java8 lambda अभिव्यक्तियों का उपयोग कर रहे थे? – Snickers3192

उत्तर

9

एक VerifyError बाईटकोड जिसका अर्थ है एक संकलक के लिए अंक अमान्य है, मुसीबत। मैं उम्मीदों में सबकुछ पुनर्निर्माण करने की कोशिश करता हूं कि यह दूर हो जाए, लेकिन अन्यथा आपको एक बग फाइल करना चाहिए। बाइटकोड को सुपरक्लास कन्स्ट्रक्टर को मैन्युअल रूप से invokenonvirtual superclass/<init>()V के माध्यम से कॉल करने की आवश्यकता है, लेकिन आपको स्रोत में super(); जोड़ने की आवश्यकता नहीं है, कंपाइलर को

0

त्रुटि कथन के रूप में अपने कन्स्ट्रक्टर की शुरुआत में super() डालने का प्रयास करें।

मैंने सोचा कि यह आम तौर पर अनुमानित था और यह लिखने के लिए, हो सकता है CostOperations की सुपर क्लास किसी भी खाली निर्माता नहीं है बाधा के बिना जोड़ा ..

+0

कॉस्टऑपरेशंस में सुपरक्लास नहीं है। – Travis

+0

लेकिन किसी कारण से यह काम किया। मुझे जावा से नफरत है ... – Travis

+0

@Travis 'ऑब्जेक्ट' को छोड़कर सभी वर्गों में एक सुपरक्लास है; यदि आपने एक निर्दिष्ट नहीं किया है तो यह 'ऑब्जेक्ट' –

0

सत्यापित करना चाहिए: कंपाइलर बग।

+0

जिज्ञासा से बाहर। यह एसडीके क्या है? –

+2

मुझे गंभीरता से संदेह है कि यह एक कंपाइलर बग है; मेरा जवाब देखें –

1

मुझे गंभीरता से संदेह होगा कि यह एक जावा कंपाइलर बग है। ऐसा कुछ किसी और ने देखा होगा और एक बग के रूप में रिपोर्ट किया जाएगा। लेकिन आप फ़ाइल को पुन: संकलित करके और javap का उपयोग करके बाइटकोड को अलग करने के लिए इसे सत्यापित कर सकते हैं। निर्माता कोड में निम्नलिखित अनुदेश के लिए देखो:

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

मुझे लगता है कि यह अधिक संभावना है कि कुछ bytecodes के बाद संकलक उन्हें लिखा है संशोधित किया जाता है। संभावनाओं में कुछ प्रोफाइलर शामिल हैं जो बाईकोड्स को प्रोफाइलिंग हुक इंजेक्ट करने के लिए संशोधित कर रहे हैं, या कुछ एनोटेशन प्रोसेसर जो निर्भरता इंजेक्शन कर रहे हैं, कट पॉइंट इत्यादि।

1

यह निश्चित रूप से एक कंपाइलर समस्या है: उत्पन्न बाइटकोड में एक अलग बाइनरी प्रारूप होता है।

इसे सुलझाने के लिए: सही परियोजना पर क्लिक करें -> गुण -> स्रोत -> स्रोत/बाइनरी स्वरूप

यह करने के लिए जो कुछ भी प्रारूप अपने कोड के लिए उपयुक्त है बदलें।

-2

मुझे लगता है कि यह क्लास/कन्स्ट्रक्टर एक्सेस विनिर्देश मेल के रूप में परिणामस्वरूप हो सकता है। मैंने अभी एक समान समस्या का समाधान किया जहां कक्षा को पैकेज एक्सेस विनिर्देशक के साथ घोषित किया गया था लेकिन इसके निर्माता को सार्वजनिक घोषित किया गया था।

बस कन्स्ट्रक्टर को पैकेज एक्सेस एक्सेस करने वाले को समस्या का समाधान करने के लिए भी बनाया गया है।

class Ngram{ 

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

    String ngram; 
    int freq; 
} 
0

यह नेटबींस में मेरे साथ हुआ। नेटबीन में, जब आप एक प्रतिलिपि बनाने का प्रयास करते हैं।जावा फाइल को "रिफैक्टर कॉपी" के बिना एक ही निर्देशिका में, यह नई फ़ाइल को "YourJavaFile_1.java" और समस्या के अवसरों के रूप में रखता है। लेकिन अगर आप उस फाइल को "रिफैक्टर कॉपी" के साथ कॉपी करते हैं, तो कोई समस्या नहीं है।

यह नाम "YourJavaFile1.java" के रूप में देता है, लेकिन रिफैक्टरिंग के साथ।

संबंधित मुद्दे