2016-04-20 6 views
13

के लिए बाइटकोड से मेल नहीं खाता है कोई विचार नहीं कि यहां क्या गलत है .. मैंने स्थानीय मैवेन रिपोजिटरी से सभी फाइलें हटा दी हैं और इसे स्क्रैच से सब कुछ डाउनलोड करने दें, लेकिन मैं इस त्रुटि से छुटकारा नहीं पा सकता:लाइब्रेरी स्रोत क्लास

enter image description here

मैं इसे क्यों देख रहा हूं और मैं इससे कैसे छुटकारा पा सकता हूं?


[INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ wordvectors --- 
[INFO] masterthesis.code:wordvectors:jar:1.0-SNAPSHOT 
[INFO] +- org.apache.spark:spark-core_2.10:jar:1.6.0:compile 
[INFO] | \- org.apache.hadoop:hadoop-client:jar:2.2.0:compile 
[INFO] |  \- org.apache.hadoop:hadoop-common:jar:2.2.0:compile 
[INFO] |  \- commons-configuration:commons-configuration:jar:1.6:compile 
[INFO] |   \- (commons-collections:commons-collections:jar:3.2.1:compile - omitted for conflict with 20040616) 
[INFO] \- org.deeplearning4j:deeplearning4j-ui:jar:0.4-rc3.8:compile 
[INFO] \- org.deeplearning4j:deeplearning4j-nlp:jar:0.4-rc3.8:compile 
[INFO]  \- it.unimi.dsi:dsiutils:jar:2.2.2:compile 
[INFO]   \- commons-collections:commons-collections:jar:20040616:compile 
+0

तुम एक हो सकता है एक ही पुस्तकालय के एक अलग संस्करण पर एक पारस्परिक निर्भरता के साथ निर्भरता। आप https://maven.apache.org/plugins/maven-dependency-plugin/examples/resolving-conflicts-using-the- निर्भरता-tree.html पर उदाहरण के बाद उन्हें खोज सकते हैं। यदि आपको लगता है कि कोई मेल नहीं है, तो आप अपनी निर्भरता की पारगमन निर्भरता को बाहर करने के लिए कह सकते हैं ताकि सभी एक ही lib संस्करण का उपयोग कर सकें। –

+0

@HankD मैं कैसे बता सकता हूं कि उनमें से कौन सा संक्रमणीय है? मैंने निर्भरता को आजमाया लेकिन ऐसा प्रतीत नहीं होता कि मेरे यहां एक संक्रमणीय है। – displayname

+0

संक्रमणीय वाले लोग '\ -' से शुरू होते हैं, इसलिए मुझे नहीं लगता कि यह है। आप स्रोत कोड के अपडेट को मजबूर करने के लिए 'एमवीएन निर्भरता: स्रोत' चलाने का प्रयास कर सकते हैं (http://stackoverflow.com/questions/2059431/get-source-jars-from-maven-repository) –

उत्तर

6

आईडिया के साथ गलत कुछ भी नहीं है, और न ही अपनी निर्भरता या स्थानीय Maven कैश, इसे सही ढंग से बेमेल की पहचान है।

यहाँ कैसे लगाया जाए:

  • प्रश्न में ओपन वर्ग
  • पर क्लिक करें "दिखाएँ diff"
  • चुनें

diff screenshot

आप "व्हाइटस्पेस और खाली लाइनों पर ध्यान न दें" स्पष्ट रूप से देख सकते हैं (जावाडोक और एफक्यूसीएन को अनदेखा कर सकते हैं) कि क्लास फ़ाइल में अतिरिक्त चेक हैं I @NonNull एनोटेटेड तर्कों के लिए छोड़ा गया। आयात lombok.NonNull कहते हैं, और documentation से पता चलता इस बदलाव नहीं होगा।

मुझे लगता है कि कार्रवाई का सर्वोत्तम रास्ता या तो इस चेतावनी को अनदेखा या प्रोजेक्ट का देखरेख चाहते हैं कि यदि संभव है lombok संसाधित स्रोत कोड से sources.jar का निर्माण करने के लिए है। मुझे लगता है कि उन्हें डेलंबोकिंग और this Maven plugin पर नियोजित करने की आवश्यकता होगी, लेकिन कभी भी लोम्बोक कोड स्वयं नहीं बनाया गया।

+0

"आप Lombok चाहते थे? ... " –

6

इस सुलझाने में, मैं Maven के साथ चारों ओर गंदगी के लिए कोई जरूरत नहीं थी, और अकेले IntelliJ विचार के साथ निपटा। मॉड्यूल, पुस्तकालयों और निर्भरता:

मेरे लिए इस समस्या को IntelliJ विचार में तीन अवधारणाओं के बीच भ्रम की स्थिति से हुआ था। मेरे पास विभिन्न पैकेजों का उपयोग करके विभिन्न परियोजनाएं थीं, जिनमें से कुछ असंगत तरीकों से एक-दूसरे का जिक्र कर रहे थे। मैं डाउनलोड किए गए तृतीय-पक्ष पैकेजों को संदर्भित करने के तरीके के बारे में भी असंगत था।

यह एक बार मैं मॉड्यूल, पुस्तकालयों और निर्भरता के तीन अवधारणाओं प्रतिष्ठित आसान था। मैंने उन्हें अपने दिमाग में कैसे स्पष्ट किया:

1) पुस्तकालय कोड (संकलित या नहीं) का संदर्भ लें जो बदलने वाला नहीं है।

2) मॉड्यूल प्रोजेक्ट के कुछ हिस्सों (यदि आप अकेले काम कर रहे हैं) का संदर्भ लें जहां कोड बदलना है।

3) ए निर्भरता (इस वार्तालाप के लिए) एक पुस्तकालय या अन्य मॉड्यूल है जो एक विशेष मॉड्यूल का उपयोग करेगा।

मैं, एक सतत परियोजना है, जो मूलतः एक और आईडीई द्वारा बनाया गया था के कोड जोड़ने IntelliJ विचार में एक निर्भरता के रूप में से त्रुटि मिली। सिद्धांत रूप में यह काम करना चाहिए, और यह करता है, लेकिन आप की तरह मैं अपने विकास पर्यावरण के शीर्ष पर एक बड़ा लाल बैनर अनदेखा नहीं कर सकता!

समस्या को हल करने के लिए:

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

Adding a module

पुस्तकालय फ़ाइल खोलें> परियोजना संरचना> पुस्तकालय, और फिर से ऊपरी बाएँ हरी धन चिह्न कोड है कि परिवर्तन नहीं होगा वाले फ़ोल्डर जोड़ने का उपयोग कर। दाईं ओर स्थित अन्य हरे रंग के प्लस साइन आपको पहले से जोड़े गए लाइब्रेरी में आंतरिक फ़ोल्डरों को जोड़ने की अनुमति देता है, लेकिन इंटेलिजे विभिन्न परियोजना संरचनाओं में इन्हें ढूंढने में अच्छा है, इसलिए विशिष्ट फ़ोल्डरों को जोड़ने के बजाए, एक नई लाइब्रेरी जोड़ने के लिए स्क्रैच से शुरू करने पर विचार करें गायब हैं और कई प्रतियां मौजूद हैं, एक और चीज जो IntelliJ को भ्रम (समझदारी से) का कारण बनती है।

Adding a library

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

enter image description here

चेतावनी वहाँ दो महत्वपूर्ण कदम जो आप जब प्रक्रिया को पूरा किये बगैर सावधान रहना चाहिए हैं:

1. सुनिश्चित करें कि प्रत्येक निर्भरता आप के लिए जोड़ा बनाओ प्रत्येक मॉड्यूल पर निर्भरता टैब में 'संकलन' का दायरा है।

2. जब आप समाप्त कर, परियोजना संरचनाएं के तल पर लागू करें बटन संवाद ठीक क्लिक से पहले क्लिक करें। ऐसा लगता है कि यह स्वचालित होना चाहिए, इंटेलिजे में इतना और, लेकिन मुझे नहीं लगता कि यह है। संवाद से बाहर निकलने से पहले आवेदन पर क्लिक न करके मैंने परियोजना संरचना में किए गए परिवर्तनों को खो दिया है।

0

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

मेरे लिए बस फ़ाइल को पुनर्निर्मित करने के लिए काम किया है।

0

था एक ही समस्या - एक gradlew स्वच्छ कमांड लाइन से किया था और फिर Android स्टूडियो में चला गया और एक फ़ाइल किया था -> अमान्य कैश और पुनः प्रारंभ और सब कुछ ठीक फिर से था ..

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