java - IntelliJ निरीक्षण "प्रतीक को हल नहीं कर सकता" देता है लेकिन अभी भी कोड संकलित करता है




maven intellij-idea intellij-inspections (25)

प्लेटफार्म: इंटेलिजे सामुदायिक संस्करण 10.0.3
एसडीके: जेडीके 1.6.0_21
ओएस: विंडोज 7

तो मेरे पास इंटेलिजे के साथ एक अजीब स्थिति है जिसने मुझे पूरी तरह से स्टंप किया है। मैं एक मेवेन प्रोजेक्ट स्थापित करता हूं और pom.xml फ़ाइल में निर्भरता के रूप में log4j जोड़ता हूं। आईडीईए निरीक्षण ठीक चलते हैं और मेरी इकाई सभी संकलन और चलाने का परीक्षण करती है।

मैंने एमएनएन इंस्टॉल का उपयोग कर अपने स्थानीय मैवेन रिपोजिटरी में हनीसॉफ्ट की जेएमआईएम लाइब्रेरी को जोड़ा: निम्नानुसार इंस्टॉल-फाइल।

mvn install:install-file -Dfile=jmime.jar -DgroupId=jmime \
-DartifactId=jmime -Dversion=3.1.1e -Dpackaging=jar

मेवेन ने जार फ़ाइल को बस अपने स्थानीय भंडार में ठीक किया।

मैं फिर IntelliJ की सेटिंग्स => Maven => रिपोजिटरी सेवाओं में गया और मेरे स्थानीय भंडार को अद्यतन किया (ताकि IntelliJ भंडार सामग्री reindex होगा)।

अंत में, मैंने अपनी pom.xml फ़ाइल पर निम्न निर्भरता जोड़ा (केवल log4j निर्भरता से ऊपर)।

<dependency>
    <groupId>jmime</groupId>
    <artifactId>jmime</artifactId>
    <version>3.1.1e</version>
</dependency>

अब मैं एक नई कक्षा बना रहा हूं:

package com..question;

import org.apache.log4j.Logger;
import com.hunnysoft.jmime.ByteString;
import com.hunnysoft.jmime.Field;
import com.hunnysoft.jmime.FieldBody;

public class Question {
    public Field create(String name, String text) {
        Logger.getLogger(getClass()).debug("create entered");
        FieldBody body = new FieldBody();
        body.setText(new ByteString(text));
        Field field = new Field();
        field.setFieldName(name);
        field.setFieldBody(body);
        return field;
    }
}

अब अजीबता के लिए। इंटेलिजे का इरादा तंत्र मेवेन पोम फ़ाइल में लॉगर आयात को ठीक करता है और पहचानता है। हालांकि, सभी हनीसॉफ्ट आयात के लिए यह रिपोर्ट करता है: "प्रतीक 'बाइटस्ट्रिंग / फ़ील्ड / फ़ील्ड बॉडी' को हल नहीं कर सकता है, लेकिन बिल्ड => संकलन 'स्टैक ओवरफ्लोक्वेस्टियन.जावा' सबकुछ सही ढंग से संकलित करता है और इस वर्ग के लिए बनाए गए यूनिट टेस्ट ठीक चलते हैं (हालांकि इरादे एक समस्या क्षेत्र के रूप में () को बनाने के लिए कॉल को चिह्नित करते हैं)।

तो कहीं, किसी भी तरह IntelliJ इरादे उपप्रणाली के लिए jmime.jar फ़ाइल को अनदेखा कर रहा है। मैं उलझन में हूं क्योंकि log4j निर्भरता ठीक काम करती है और सबकुछ संकलित करता है और ठीक चलता है। एफ 12 ("घोषणापत्र पर जाएं") लॉगर आयात पर काम करता है, लेकिन सभी जेएमआईएम आयात पर टूट जाता है।

ओह, एक और बात, अगर मैं "प्रोजेक्ट्स" विंडो में 'पैकेज' दृश्य पर जाता हूं तो "com.hunnysoft.jmime" पैकेज प्रकट होता है और मैं "पुस्तकालयों" के नीचे उपरोक्त कोड स्निपेट में आयात किए गए सभी वर्ग देख सकता हूं । Pom.xml फ़ाइल से उपर्युक्त निर्भरता को हटाने से यह पैकेज गायब हो जाता है और संकलन टूट जाता है।

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

एक अंतिम प्रयोग के रूप में मैंने एक ब्रांड नई मानक जे 2 एसई प्रोजेक्ट प्रोजेक्ट (मैवेन का उपयोग किए बिना) बनाया और jmime.jar फ़ाइल को सीधे अपने पुस्तकालयों में से एक के रूप में प्रोजेक्ट में जोड़ा। मैं इस नई परियोजना में ऊपर वर्णित वही समस्याएं चलाता हूं।

Jmime jar फ़ाइल से MANIFEST.MF यहां है।

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.5.4
Created-By: 10.0-b23 (Sun Microsystems Inc.)

Name: com/hunnysoft/jmime/
Sealed: true
Specification-Title: Hunny JMIME
Specification-Version: 3.1.1
Specification-Vendor: Hunny Software, Inc.
Implementation-Title: com.hunnysoft.jmime
Implementation-Version: 3.1.1E
Implementation-Vendor: Hunny Software, Inc.

मुझे इस जार फ़ाइल में कुछ भी असामान्य नहीं दिख रहा है।

मेरा सबसे अच्छा अनुमान यह है कि शायद समस्या एक लापता निर्भरता मुद्दा हो सकती है। लेकिन AFAIK jmime को स्वयं निहित माना जाता है (JarAnalyzer कुछ भी नहीं आती है, लेकिन मुझे यकीन नहीं है कि अगर निर्भरता जार गायब हो तो यह होगा)।

तो, किसी के पास कोई आईडीईए है?


Answers

प्रोजेक्ट को फिर से आयात करना मेरे लिए काम करता है। प्रोजेक्ट पर राइट क्लिक करें -> मेवेन -> रीमपोर्ट

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


इंटेलिज आइडिया उपयोगकर्ताओं के लिए परियोजना आयात करने से पहले यह आदेश मदद कर सकते हैं:

./gradlew निर्माण/ gradlew विचार


मेरे मामले में, केवल buildDir हटा दिया गया है। इस मामले में, File | Invalidate Caches File | Invalidate Caches काम नहीं करता है।

जब मैं Build | Make Project करता हूं Build | Make Project File | Invalidate Caches से पहले Build | Make Project File | Invalidate Caches File | Invalidate Caches , सबकुछ ठीक काम करता है।


सबसे पहले आपको File | Invalidate Caches प्रयास करना चाहिए File | Invalidate Caches और यदि यह मदद नहीं करता है, तो IDEA सिस्टम निर्देशिका हटाएं। फिर मेवेन प्रोजेक्ट को दोबारा आयात करें और देखें कि क्या यह मदद करता है।

कुछ अजीब मामलों में संकलित कक्षाएं गलत जानकारी की रिपोर्ट कर सकती हैं और आईडीईए को भ्रमित कर सकती हैं। सत्यापित करें कि इस जार की कक्षाएं javap का उपयोग करके सही नामों की रिपोर्ट javap


उपर्युक्त समाधानों में से कोई भी मेरे लिए हल नहीं हुआ। मेरे पास एक ही समस्या थी जहां कोड ठीक संकलित था लेकिन इंटेलिजे ने दिखाया कि यह आयात नहीं मिला। हालांकि इंटेलिजे ने कोड पूर्ण होने से पहले स्थान पर आयात का सुझाव दिया था।

मेरा समाधान सबकुछ डिफ़ॉल्ट पैकेज में ले जाना था, com.foo.bar पैकेज को हटाएं, फिर इसे फिर से बनाएं और सब कुछ वापस ले जाएं।


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


मेरे कैश को अमान्य करने और पुनरारंभ करने के बाद; और मेरी मैवेन सेटिंग्स की पुष्टि ठीक थी, मैं अभी भी एक मॉड्यूल के लिए "प्रतीक हल नहीं कर सकता" देख रहा था जिसे मैंने निश्चित रूप से निर्भरता के रूप में सेट किया था। बाहर निकलता है मैंने इसे गलत गुंजाइश पर सेट किया था।

आप अपने मॉड्यूल पर राइट क्लिक करके और ओपन मॉड्यूल सेटिंग्स का चयन करके जांच सकते हैं। निर्भरता टैब पर क्लिक करें और सत्यापित करें कि आपकी अन-सुलभ निर्भरता के दायरे को संकलित करने के लिए सेट किया गया है।


या हो सकता है कि आपके द्वारा आयात की गई फ़ाइल बहुत बड़ी हो। यह मेरा मामला है, जब मैं इंटेलिज संपत्ति बदलता हूं: iead.max.intellisen.filesize (पथ $ {idea dir} /bin/idea.properties) एक बड़े मूल्य पर है, जैसे 25000, और आईडीई को पुनरारंभ करें, समस्या गायब हो गई। उम्मीद है की यह मदद करेगा।


ऊपर दिए गए समाधानों में से कोई भी मेरे लिए काम नहीं करता है। मैन्युअल रूप से main.iml फ़ाइल को हटा रहा था और यह अचानक काम करता था।


क्या एक निश्चित प्रकाशित किया गया है? 2013 में "कंपाइलर ओवरहाल" के कारण मूल रूप से प्रभावित v11 / 12 जारी करता है। 2014 के अंत तक जिरा में संबंधित मुद्दों पर चर्चा के साथ। http://youtrack.jetbrains.com/issue/IDEA-98425

इसके अलावा जिरा आईडीईए -98425 को निश्चित लेकिन असत्यापित चिह्नित किया गया था (v12.0.3 पर)। निम्नलिखित में से कोई भी कार्य-आसपास विंडोज़ पर संस्करण 13.1.1 के साथ "प्रतीक को हल करने में असमर्थ" समस्या को हल करने में मदद करता है

ए। हटाएं IdealIC13 फ़ोल्डर (फिर, फ़ाइल \ अवैध कैश / पुनरारंभ करें)

ख। मेवेन प्रोजेक्ट्स विंडो से,

बी .1 एमवीएन-यू विचार: विचार -> इस मेवेन लक्ष्य को निष्पादित करना निर्भरताओं को फिर से लोड करना है। यह काम करता है, लेकिन आखिरी एफआरआई के बाद से, इस मेवेन लक्ष्य को निष्पादित करने में विफल रहा क्योंकि इसने परियोजना को पुन: संकलित करने की कोशिश की (बेशक यह "प्रतीकों को हल करने में असमर्थ" के रूप में विफल रहता है, यही वह है जिसे मैं पहली बार इस आदेश को चलाकर ठीक करने की कोशिश कर रहा हूं) mvn -version - 3.2.5 संदर्भित मैवेन संस्करण दिखाता है और यह काम कर रहा है

बी। बस प्रोजेक्ट पर राइट क्लिक करें, और रीमपोर्ट करें

बी.3 फ़ाइल \ अमान्य कैश / पुनरारंभ करें

सी। इस सेटिंग को सक्षम और अक्षम दोनों का प्रयास करें: फ़ाइल -> सेटिंग्स -> मेवेन -> आयात -> "परियोजना आयात करने के लिए maven3 का उपयोग करें"

घ। सेटिंग्स \ Maven \ Multiproject बिल्ड विफल नीति = अंत में विफल (डिफ़ॉल्ट की बजाय)

कुछ भी काम नहीं करता है। मेवेन पर IntelliJ समर्थन के लिए क्या खुशी है।

https://youtrack.jetbrains.com/issue/IDEA-99302

JetBeans रिलीज इतिहास से, https://www.jetbrains.com/company/history.jsp

IntelliJ v14 एनओवी 2014

IntelliJ v13 डीईसी 2013

मैं मानता हूं कि वी 12 निश्चित (हालांकि असत्यापित ) बाद के रिलीज में शामिल किया जाएगा। किसी भी व्यक्ति को इंटेलिज संस्करण के साथ ऐसी ही समस्याएं हैं? कृपया अपना अनुभव साझा करें। IntelliJ maven समर्थन टूटा लगता है।


ग्रैडल उपयोगकर्ताओं के लिए:

आपको अपनी प्रोजेक्ट को अपनी build.gradle फ़ाइल से सिंक्रनाइज़ करने की आवश्यकता हो सकती है।

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

मेरा खुद का परिस्थिति: मैं ग्रैडल के साथ एक स्कैला प्रोजेक्ट का उपयोग कर रहा था और इसे करना था।


परियोजना संरचना में असंगत / डुप्लिकेट मॉड्यूल नाम मेरे लिए यह मुद्दा पैदा कर रहा था।

  1. File -> Project Strucutre -> Modules
  2. मॉड्यूल पर क्लिक करें जिसमें लाल रेखांकित है
  3. "निर्भरता" टैब पर मिला
  4. सुनिश्चित करें कि निर्भरता सूची में वास्तव में निर्भर निर्भरताएं मौजूद हैं। यदि नहीं, तो मौजूदा निर्भरता नामों से मेल खाने के लिए उनका नाम बदलें

यह तब हो सकता है जब IntelliJ ठीक से बंद नहीं होता है और इस प्रकार नामित मॉड्यूल नामों को सही तरीके से सहेज नहीं सकता है।


मुझे बस यह मुद्दा था और यह अभी नहीं चलेगा। अंततः मैंने IntelliJ कॉन्फ़िगरेशन निर्देशिका को ~ में मिटा दिया और स्क्रैच से मेरी इंटेलिजे परियोजना को पुनर्निर्मित किया। (कैश की गई फाइलों आदि के साथ समस्याओं को हल करने की कोशिश करने में एक घंटे खर्च करने की तुलना में, अंत में केवल 15 मिनट लग गए)

संपादित करें: ध्यान दें कि मेरा अनुमान यह है कि प्रारंभिक समस्या कुछ ऐसी वजह से हुई थी: http://javathings.blogspot.com/2009/11/too-many-open-files-in-intellij-idea.html या डिस्क स्थान / स्मृति समस्या जावा को दुर्घटनाग्रस्त कर रही है। IntelliJ बस दूषित हो रहा था।


अगर मेवेन प्रोजेक्ट तो सेटिंग्स पर जाएं -> टूल्स टूल्स -> मैवेन -> आयात करना। चेकबॉक्स "स्वचालित रूप से आयात मैवेन प्रोजेक्ट" की जांच करें। समस्या हल करेंगे।


एक और विकल्प के लिए।

जब मैंने जेडीके 7_07 का इस्तेमाल किया तो मुझे यह समस्या भी मिली। मैंने यहां सभी उत्तरों की कोशिश की (आईडीईए सिस्टम निर्देशिका को हटाने के अलावा)। लेकिन, मुझे अभी भी समस्या मिली है। तो मैंने यह क्या किया है:

नवीनतम जेडीके स्थापित करें (यह जेडीके 7_45 था), और इंटेलिज के जेडीके को नए पर सेट करें, और यह काम करता है।


  1. सेटिंग्स खोलें"
  2. "मेवेन" के लिए खोजें
  3. "मेवेन" के अंतर्गत "अनदेखा फ़ाइलें" पर क्लिक करें
  4. Pom.xml फ़ाइलों को अनचेक करें अनुपलब्ध निर्भरताएं हैं
  5. ओके पर क्लिक करें"
  6. फ़ाइल पर क्लिक करें -> अमान्य कैश / पुनरारंभ करें ...
  7. "अमान्य करें और पुनरारंभ करें" पर क्लिक करें

आइडिया 2017.1 + ग्रैडल के लिए, प्लगइन किसी भी तरह की छोटी गाड़ी है। सभी सिंक्रनाइज़ करने का प्रयास किया, अमान्य + पुनरारंभ करें, कुछ भी काम नहीं किया। https://github.com/gradle/gradle/issues/2315 अनुसार, यह मेरे लिए काम करता है: 1. आइडिया बंद करें 2. कमांड लाइन में क्रमबद्ध विचार टाइप करें (3 फाइलें उत्पन्न करनी चाहिए: .iml, .ipr, .iws) 3. विचार चलाएं और बनाई गई फ़ाइल खोलें .ipr, यह आपकी परियोजना को उन 3 फ़ाइलों में हार्ड-वायर्ड निर्भरताओं के साथ स्क्रैच से आयात करना चाहिए


मेरा परियोजना संरचना:

src -> main -> scala -> mypackages

क्या काम किया:

scala फ़ोल्डर पर राइट क्लिक करें, और "स्रोत रूट के रूप में निर्देशिका चिह्नित करें" पर क्लिक करें।


जब मैंने एक नए कंप्यूटर पर स्विच किया तो मुझे एक ही समस्या थी।

मैंने सभी आईडीईए फाइलों (यहां तक ​​कि संबंधित% APPDATA%-फ़ोल्डर्स) की प्रतिलिपि बनाई है, लेकिन फिर मेवेन बिल्ड सफलतापूर्वक था, लेकिन आईडीईए को इसे बनाने के दौरान निर्भरताओं से कोई वर्ग नहीं मिला।

समाधान: मैंने% APPDATA%-फ़ोल्डर्स से फ़ोल्डर्स को हटाकर एक नई और साफ आईडीईए प्रोफ़ाइल शुरू की


mvn idea:idea मेरे लिए काम किया। इसे here मिला। एक घंटे से अधिक खर्च करें, उम्मीद है कि यह किसी की मदद करेगी


मेरे मामले में, मैंने अपनी मेवेन प्रोजेक्ट में फ़ाइलों के बड़े पुनर्गठन की जांच करने के बाद यह समस्या दिखाई दी। चेक आउट के समय मेरे पास अभी भी सक्रिय परिवर्तनों में से कुछ अनचेक थे। जहां तक ​​मैं कह सकता हूं, तब तक किसी भी फाइल को पुनर्गठित किया जा रहा था।

कैश को अमान्य करना और पुनरारंभ करना मेरे लिए काम नहीं करता था। काम क्या था:

  • बड़े पुनर्गठन चेकआउट से पहले किए गए परिवर्तनों को वापस लेना
  • सभी मेवेन मॉड्यूल reimporting

निम्नलिखित चाल ने मेरे लिए इस मुद्दे को हल किया:

  • कोड संपादक पर राइट क्लिक करें
  • मेवेन पर होवर करें और विस्तार करें
  • Reimport पर क्लिक करें

मेरा विचार संस्करण 12.0.4 है


सुझाए गए समाधान काम नहीं करते थे। मुझे pom => maven => unignore प्रोजेक्ट पर राइट क्लिक करके कई परियोजनाओं को अनदेखा करना पड़ा।

फिर एक के बाद

mvn clean install -T 6 -DskipTests

कंसोल में, इंटेलिजे फिर से खुश था। कोई विचार नहीं कि परियोजनाओं को कैसे नजरअंदाज कर दिया गया ...


हां, ऐसा लगता है जैसे आपको आवश्यक जेएआर युक्त पुस्तकालय बनाना है और उन्हें अपने मॉड्यूल में निर्भरता के रूप में जोड़ना है।


उन लोगों के लिए एक दृश्य जो इससे लाभान्वित होते हैं।

परियोजना के नाम पर राइट-क्लिक करने के बाद (इस उदाहरण में "परीक्षण"), "फ्रेमवर्क समर्थन जोड़ें" का चयन करें और "मेवेन" विकल्प को चेक करें।





java maven intellij-idea intellij-inspections