IntelliJ IDEA का उपयोग करते हुए, एक JUnit परीक्षण चलाते समय, मुझे मिलता है
यह कैसे सही हो सकता है?
- एसडीके 1.7 का उपयोग करना
- मॉड्यूल भाषा स्तर 1.7 है
मावेन बिल्ड ठीक काम करता है। (यही कारण है कि मैं IDEA कॉन्फ़िगरेशन समस्या में यह विश्वास करता हूं)
IntelliJ IDEA का उपयोग करते हुए, एक JUnit परीक्षण चलाते समय, मुझे मिलता है
यह कैसे सही हो सकता है?
मावेन बिल्ड ठीक काम करता है। (यही कारण है कि मैं IDEA कॉन्फ़िगरेशन समस्या में यह विश्वास करता हूं)
जवाबों:
सबसे अधिक संभावना है कि आपके पास मावेन से आयातित गलत संकलक विकल्प हैं:
इसके अलावा जाँच परियोजना और मॉड्यूल bytecode (स्क्रीनशॉट पर उल्लिखित लक्ष्य ) संस्करण सेटिंग्स भी देखें।
अन्य स्थान जहां स्रोत भाषा स्तर कॉन्फ़िगर किया गया है:
Maven डिफ़ॉल्ट भाषा के स्तर है 1.5 (5.0), आप ऊपर स्क्रीनशॉट पर मॉड्यूल भाषा के स्तर के रूप में इस संस्करण देखेंगे।
इसे मावेन-कंपाइलर-प्लगइन कॉन्फ़िगरेशन का उपयोग करके बदला जा सकता है pom.xml
:
<project>
[...]
<build>
[...]
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
[...]
</build>
[...]
</project>
या
<project>
[...]
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
[...]
</project>
IntelliJ IDEA Maven प्रोजेक्ट्स टूल विंडो में Maven प्रोजेक्ट को Reimport करने के बाद इस सेटिंग का सम्मान करेगा :
pom.xml
जावा कम्पाइलर प्लग-इन कॉन्फ़िगरेशन में जावा संस्करण निर्दिष्ट हो सकता है जो अगली बार जब आप pom.xml में परिवर्तन करते हैं तो यह सेटिंग ओवरराइड हो जाएगी (यदि स्वचालित रीइम्पोर्ट सक्षम है) या मैन्युअल रूप से प्रोजेक्ट को फिर से आयात करें।
इंटेलीज 13 और 14 के लिए नीचे चर्चा की गई है, लेकिन सेटिंग्स / प्राथमिकताएं पैनल में एक अतिरिक्त स्तर के साथ: सेटिंग्स > बिल्ड, निष्पादन, तैनाती > कंपाइलर > जावा कंपाइलर ।
IntelliJ 13 और 14 में, सेटिंग> कंपाइलर> जावा कंपाइलर UI की जांच करें ताकि यह सुनिश्चित किया जा सके कि आप अपने मॉड्यूल में भिन्न बायोटेक संस्करण को लक्षित नहीं कर रहे हैं।
में IntelliJ विचार 14.1 "लक्ष्य बाईटकोड संस्करण" एक अलग जगह में है।
निम्नलिखित परिवर्तन ने मेरे लिए काम किया:
फ़ाइल> सेटिंग्स ...> निर्माण, निष्पादन, तैनाती> कंपाइलर> जावा कंपाइलर : लक्ष्य बाइटकोड संस्करण को 1.5 से 1.8 तक बदल दें
क्या आपने अपने बिल्ड कॉन्फ़िगरेशन पर ध्यान दिया है जैसे कि यदि आप मावेन 3 और जेडीके 7 का उपयोग करते हैं
<build>
<finalName>SpringApp</finalName>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
...
</plugins>
...
</build>
मैं इसमें भाग गया और तय था कि प्रोजेक्ट सेटिंग्स> मॉड्यूल> विशेष मॉड्यूल> निर्भरता टैब पर क्लिक करें। मैंने देखा कि मॉड्यूल एसडीके अभी भी 1.6 पर सेट था, मैंने इसे 1.7 में बदल दिया और यह काम कर गया।
निम्नलिखित पथ में प्रोजेक्ट की संकलक सेटिंग फ़ाइल को संशोधित करें और 'लक्ष्य' को बदलकर 1.7 करें:
/project/.idea/compiler.xml
<bytecodeTargetLevel>
<module name="project-name" target="1.7" />
</bytecodeTargetLevel>
मैंने इसे खाली क्षेत्र निर्धारित करके हल किया:
सेटिंग्स> कंपाइलर> जावा कंपाइलर> प्रोजेक्ट बायटेकोड संस्करण
IntelliJ JDK डिफ़ॉल्ट संस्करण का उपयोग करता है।
एक पल से दूसरे तक भी मुझे बिना किसी स्पष्ट कारण के यह त्रुटि मिली। मैंने कंपाइलर / मॉड्यूल आदि पर सभी प्रकार की सेटिंग्स बदल दीं, लेकिन अंत में मैंने मावेन परियोजना को फिर से शुरू करके इंटेलीज प्रोजेक्ट को फिर से बनाया और समस्या हल हो गई। मुझे लगता है कि यह एक बग है।
इंटेलीज 12 129.961
मैंने इसे IntelliJ IDEA 14 से v14.1 तक मामूली अपग्रेड के बाद हिट किया है। मेरे लिए टॉप / पैरेंट पोम के एक एडिट को बदलने में मदद मिली और फिर मावेन (यदि यह स्वचालित नहीं है) को फिर से आयात किया गया।
लेकिन यह शायद मॉड्यूल (राइट्स) / एग्रीगेटेड / पैरेंट मॉड्यूल और मावेन -> रिइम्पोर्ट पर राइट क्लिक करने के लिए पर्याप्त है।
यदि यह एक ग्रेडल प्रोजेक्ट है, तो आपकी build.gradle फ़ाइल में, निम्न सेटिंग्स खोजें:
sourceCompatibility = "xx"
targetCompatibility = "xx"
सभी उप-विषय के लिए, अपनी रूट बिल्ड.ग्रेडल फ़ाइल में, आप डाल सकते हैं:
subprojects { project ->
sourceCompatibility = "1.7"
targetCompatibility = "1.7"
}
हालाँकि, आप मैन्युअल रूप से Idea> सेटिंग में भाषा का स्तर सेट कर सकते हैं, यदि यह एक ग्रैडल प्रोजेक्ट है, तो Idea स्वचालित रूप से मॉड्यूल .iml फ़ाइलों को ग्रेडल सेटिंग्स (Idea 15+ के साथ परीक्षण) से सिंक्रनाइज़ करता है। इसलिए जब ग्रेड रिफ्रेश हो जाता है तो आपके सभी मैनुअल बदलाव खत्म हो जाते हैं।
ग्रैडल डॉक्यूमेंटेशन के आधार पर , यदि ये सेट नहीं होते हैं, तो वर्तमान जेवीएम कॉन्फ़िगरेशन का उपयोग किया जाता है।
मुझे इस त्रुटि में चलाने का एक और तरीका मिला। आप इसे प्राप्त कर सकते हैं यदि आप अपनी निर्देशिका संरचना को फिर से व्यवस्थित कर रहे हैं, और आपका एक पॉम पुराने माता-पिता को इंगित कर रहा है जो अब javac को कॉन्फ़िगर नहीं करता है (क्योंकि यह कॉन्फ़िगरेशन मध्य स्तर पर ले जाया गया था)। यदि ऐसा होता है तो शीर्ष स्तर 1.5 पर चूक जाता है और दुर्व्यवहार निचले स्तर के पोम को विरासत में मिलता है।
इसलिए जब आप इस त्रुटि को देखते हैं तो यह जांचने के लिए एक और बात यह है कि आपकी पोम संरचना आपकी निर्देशिका संरचना से ठीक से मेल खा रही है।
यदि मावेन निर्माण ठीक काम करता है, तो मावेन और इंटेलीज आईडीईए परियोजनाओं की संरचना को सिंक्रनाइज़ करने का प्रयास करें।
में Maven उपकरण खिड़की , ताज़ा करें बटन क्लिक । इस बटन को दबाने पर, IntelliJ IDEA, Maven टूल विंडो में प्रोजेक्ट संरचना को पार्स करता है।
ध्यान दें कि यह मदद नहीं कर सकता है यदि आप ईएपी बिल्ड का उपयोग कर रहे हैं, क्योंकि मावेन सिंक्रोनाइज़ेशन सुविधा कभी-कभी टूट सकती है।
सुनिश्चित करें कि सही चित्रण चुना गया है। फ़ाइल> प्रोजेक्ट संरचना
अपनी परियोजना का चयन करें और निर्भरता टैब पर नेविगेट करें। ड्रॉपडाउन से सही निर्भरता का चयन करें या नया बनाएँ।
यदि पिछले सभी समाधानों ने आपके लिए काम नहीं किया है (जो मेरा मामला था), आप इंटेलीज कॉन्फिग फाइल को हटा सकते हैं:
Intellij नए लोगों को बाद में पुनर्जीवित करेगा। हालाँकि, BE CAREFUL, यह projet पर बने सभी intellij कॉन्फ़िगरेशन को भी हटा देगा (यानी: debug mode का कॉन्फ़िगरेशन, ...)