2009-07-14 14 views
57

"java.lang.Error: अनसुलझा संकलन समस्या" के संभावित कारण क्या हैं?जावा: अनसुलझा संकलन समस्या

अतिरिक्त जानकारी:

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

इंटरफेस बदले जाने पर मैं लिंकेजइरर्स या क्लास नॉटफाउंड त्रुटियों को देखने की अपेक्षा करता हूं। उपरोक्त त्रुटि कुछ निचले स्तर की समस्या पर संकेत देती है।

एक स्वच्छ पुनर्निर्माण और पुनर्निर्माण ने समस्या को हल किया। क्या यह त्रुटि भ्रष्ट जार को इंगित कर सकती है?

+0

इस त्रुटि के कारण आपने क्या किया? –

उत्तर

55

(2015/07/28 फिर से लिखा)

ग्रहण के डिफ़ॉल्ट व्यवहार को जब यह में त्रुटियों के साथ कोड संकलन, अपवाद जैसा कि आप देख फेंकने बाइट कोड उत्पन्न करने के लिए है। यह संभव है क्योंकि ग्रहण जेपीके से javac के बजाय अपने स्वयं के अंतर्निहित कंपाइलर का उपयोग करता है, जिसे अपाचे मैवेन उपयोग करता है। यदि आप एक मैवेन प्रोजेक्ट पर ग्रहण का उपयोग करते हैं जिसे आप कमांड लाइन mvn कमांड का उपयोग करने के साथ भी काम कर रहे हैं, तो ऐसा हो सकता है।

इलाज फिर से चलाने से पहले त्रुटियों को ठीक करने और पुन: संकलित करना है।

सेटिंग इस screendump में एक लाल बॉक्स के साथ चिह्नित है:

Eclipse Preferences under OS X

+0

यह मेरा मामला नहीं है। मैंने इसे एक सर्वर पर जेएआर फाइलों (मेवेन का उपयोग करके) को तैनात करने के बाद देखा। –

+1

शायद आपके मैवेन बिल्ड कॉन्फ़िगरेशन में कोई समस्या है और यह आपके ग्रहण आउटपुट निर्देशिका से .class फ़ाइलों का उपयोग कर रहा है। किसी भी तरह, एकमात्र बार मैंने देखा है कि त्रुटि तब होती है जब ग्रहण में संकलन त्रुटियों के साथ कोड चलाते हैं। –

+0

उस मामले में आपका मेवेन बिल्ड सबसे अधिक टूटा हुआ है। ग्रहण बंद होने के साथ, कमांड लाइन से सफाई और पुन: संकलन करने का प्रयास करें। –

6

आपका संकलित कक्षाएं नए जार के साथ स्रोत से फिर कंपाइल किया पड़ सकता है।

"mvn स्वच्छ" चल रहा है और उसके बाद ग्रहण परियोजना साफ करने के लिए पुनर्निर्माण

3

तुम सिर्फ आदेश

mvn clean 

और कहा कि निम्न आदेश के बाद से Maven साफ करने की कोशिश

mvn eclipse:clean eclipse:eclipse 

और अपनी परियोजना का पुनर्निर्माण ....

+0

m2e ग्रहण प्लगइन की वर्तमान गुणवत्ता (2015) को देखते हुए, मैं विभिन्न ग्रहण मैवेन लक्ष्यों के बजाय एक ग्रहण का उपयोग करने का सुझाव दूंगा। –

1

मुझे यह त्रुटि थी जब मैंने एक लॉन्च कॉन्फ़िगरेशन का उपयोग किया जिसमें अमान्य क्लासपाथ था। मेरे मामले में, मेरे पास एक प्रोजेक्ट था जिसने शुरुआत में मेवेन का उपयोग किया था और इस प्रकार एक लॉन्च कॉन्फ़िगरेशन में मेवेन क्लासपाथ तत्व था। मैंने बाद में परियोजना को ग्रैडल का उपयोग करने के लिए बदल दिया और प्रोजेक्ट के क्लासपाथ से मेवेन क्लासपाथ को हटा दिया, लेकिन लॉन्च कॉन्फ़िगरेशन ने अभी भी इसका इस्तेमाल किया। मुझे यह त्रुटि चलाने की कोशिश कर रहा है। परियोजना की सफाई और पुनर्निर्माण इस त्रुटि को हल नहीं किया था। इसके बजाय, लॉन्च कॉन्फ़िगरेशन को संपादित करें, प्रोजेक्ट क्लासपाथ तत्व को हटाएं, फिर प्रोजेक्ट को क्लासपाथ में उपयोगकर्ता प्रविष्टियों में वापस जोड़ें।

1

मुझे यह त्रुटि कई बार मिली और काम करने के लिए संघर्ष किया। अंत में, मैंने रन कॉन्फ़िगरेशन हटा दिया और डिफ़ॉल्ट प्रविष्टियों को फिर से जोड़ा। यह खूबसूरती से काम किया।

1

मुख्य भाग सही ढंग से Thorbjørn Ravn Andersen द्वारा उत्तर दिया गया है।

यह उत्तर शेष प्रश्न पर प्रकाश डालने का प्रयास करता है: जार में त्रुटियों वाली कक्षा फ़ाइल कैसे समाप्त हो सकती है?

प्रत्येक बिल्ड (एमवीएन & जावा या ग्रहण) संकलन त्रुटि को हिट करते समय अपने विशिष्ट तरीके से सिग्नल करता है, और इससे एक जार फ़ाइल बनाने से इंकार कर देगा (या कम से कम आपको प्रमुख रूप से सतर्क कर देगा)। एक जार में त्रुटियों के साथ चुपचाप कक्षा फाइलों को प्राप्त करने का सबसे संभावित कारण मेवेन और ग्रहण के समवर्ती ऑपरेशन द्वारा किया जाता है।

आप खुले ग्रहण एक mvn निर्माण चल रहा है, जबकि है, तो आप चाहिए अक्षमपरियोजना>बिल्ड स्वचालित रूप से तक mvn पूरा करती है।

0

सुनिश्चित करें कि आपने निर्माण पथ से अनुपलब्ध पुस्तकालयों (जार फ़ाइलों) को हटा दिया है

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