IntelliJ IDEA 13 1.7 की सेटिंग के बावजूद जावा 1.5 का उपयोग करता है


147

JDK 1.7 को सभी प्रोजेक्ट सेटिंग्स (सहित File -> Project Structure -> Project :: Project SDK) में निर्दिष्ट करने के बावजूद , IntelliJ 13कुछ साधारण जावा 7 कोड को संकलित करने का प्रयास करते समय निम्न त्रुटि उत्पन्न होती है , जो डायमंड ऑपरेटर का उपयोग करता है:

java: diamond operator is not supported in -source 1.5
(use -source 7 or higher to enable diamond operator)

क्या कॉन्फ़िगरेशन में कोई अन्य स्थान है जहां अपेक्षित -source 7विकल्प सक्षम होना चाहिए?


8
आप की कोशिश की: File -> Project Structure -> Project :: Project language levelपरिवर्तन करने के लिए Diamonds, ARM, multi-catch etc?
आदम शखोबोव Adam

39
हाँ। जैसा कि यह पता चला है, फ़ाइल -> प्रोजेक्ट संरचना -> मॉड्यूल :: स्रोत (पथ और निर्भरता के बगल में) के तहत अभी तक एक और विकल्प है और "भाषा स्तर" विकल्प है जिसे सही ढंग से सेट करने की आवश्यकता है। टिप्पणी और जवाब के लिए आप सभी लोगों का धन्यवाद! :-)
पीएनएस

डुप्लिकेट stackoverflow.com/questions/21747254/…
rofrol

33
3 जगह हैं जिन्हें अपडेट करने की आवश्यकता है। (1) फ़ाइल -> सेटिंग्स (शॉर्टकट के लिए Ctrl + alt + s) फिर "बिल्ड, निष्पादन, परिनियोजन"> कंपाइलर> जावा कंपाइलर और "लक्ष्य बायटेकोड संस्करण" को अपने इच्छित जावा संस्करण में बदलें। (2 और 3) दूसरी जगह फ़ाइल> प्रोजेक्ट स्ट्रक्चर (Ctrl + Alt + Shift + S)> "प्रोजेक्ट सेटिंग्स"> "प्रोजेक्ट" के तहत है। प्रोजेक्ट SDK को जावा के उपयुक्त संस्करण को इंगित करने और प्रोजेक्ट भाषा स्तर को सेट करने के लिए बदलें सही संस्करण। कोड सहायता केवल आपके लिए भाषा स्तर में बदलाव करती है दुर्भाग्य से नई परियोजनाओं के लिए यह एक झुंझलाहट है।
8bitme

2
क्या होगा अगर मेरे प्रोजेक्ट में मेरे पास 200 मॉड्यूल हैं, तो मुझे उन्हें पूरा करने में पूरा दिन लगाना होगा?

जवाबों:


114

अगर इसमें से कुछ भी मदद नहीं करता है (मेरा मामला), तो आप इसे अपने pom.xml में सेट कर सकते हैं, जैसे:

<properties>
  <maven.compiler.source>1.7</maven.compiler.source>
  <maven.compiler.target>1.7</maven.compiler.target>
</properties>

जैसा कि इस शांत आदमी ने यहां उल्लेख किया है: https://stackoverflow.com/a/25888116/1643465


4
अच्छा विचार है, लेकिन जब तक आप अपने सभी साथियों की सेटिंग को
खत्म

8
इसने मेरे लिए इस मुद्दे को हल कर दिया, धन्यवाद! यह "टीम के साथियों की सेटिंग को कैसे उड़ा सकता है"? यदि परियोजना का लक्ष्य 1.7 है तो यह 1.7 है। ऐसा नहीं है कि प्रत्येक टीम के साथी का लक्ष्य वातावरण अलग है।
isapir

1
बहुत अच्छा, मेरा मावेन प्रोजेक्ट है।
हुवाथांग

1
नए मावेन प्रोजेक्ट्स के लिए यह सेटिंग डिफॉल्ट मावेन प्रोजेक्ट्स में जोड़ी जा सकती है। उपयोग प्राथमिकताएँ | संपादक | फ़ाइल और कोड टेम्पलेट | मावेन | Maven Projects.xml <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> InteliJ सपोर्ट फोरम
pRmdk

इसने मेरे लिए काम किया। लेकिन केवल जब मैंने इंटेलीज को फिर से शुरू किया, तो मैंने अकेले प्रोजेक्ट के पुनर्निर्माण की कोशिश की और यह काम नहीं किया।
Metin Dagcilar

155

कृपया अपने प्रोजेक्ट / मॉड्यूल भाषा स्तर (प्रोजेक्ट स्ट्रक्चर | प्रोजेक्ट; प्रोजेक्ट स्ट्रक्चर | मॉड्यूल | मॉड्यूल-नाम | स्रोत) की जाँच करें। आप भी सेटिंग्स पर एक नज़र रखना चाहते हो सकता है | संकलक | जावा कम्पाइलर | प्रति-मॉड्यूल बायटेकोड संस्करण।

इसे भी सेट करें:

फ़ाइल -> परियोजना संरचना -> मॉड्यूल :: स्रोत (पथ और निर्भरता के बगल में) और इसके पास एक "भाषा स्तर" विकल्प है जिसे सही ढंग से सेट करने की आवश्यकता है।


2
और देखें कि क्या Additional command line parametersमें Java Compilerसेटिंग्स खाली है।
नेप्लेटनीउदज

2
नोट: तीसरी चीज़ (फ़ाइल -> प्रोजेक्ट संरचना -> मॉड्यूल :: स्रोत) जो मेरे लिए इसे हल करती है।
पीटर

इस उत्तर पर इस प्रक्रिया के उपयोगी स्क्रीनशॉट: stackoverflow.com/a/21747329/1146608
पैट्रिक एम

1
मावेन का उपयोग करते समय, पोम को संशोधित करने की आवश्यकता है: stackoverflow.com/questions/27037657/…
बेंज

11
भाषा स्तर के लिए +1। वहाँ नहीं होना चाहिए सेट और फिर से सेट और एक ही # $% ^ बात फिर से फिर से स्थापित करने के लिए बहुत सारे स्थान हो!
जी एन - सोनारसोर्स टीम

52

[IntelliJ IDEA 2016.2 के लिए]

मैं अप-टू-डेट स्क्रीनशॉट के साथ पीटर ग्रोमोव के उत्तर के हिस्से का विस्तार करना चाहूंगा । विशेष रूप से यह विशेष भाग:

आप भी सेटिंग्स पर एक नज़र रखना चाहते हो सकता है | संकलक | जावा कम्पाइलर | प्रति-मॉड्यूल बायटेकोड संस्करण।

मेरा मानना ​​है कि (कम से कम 2016.2 में): gitइन 1.5 को रीसेट करता है।

प्रति-मॉड्यूल बायटेकोड संस्करण


5
मैंने उन्हें उनकी सही संख्या पर बनाए रखने के लिए छोड़ दिया (किसी कारण से वे बदलते हैं - मुझे लगता है कि जब मैं करता हूं git checkout)। मैंने पाया कि मैं इस सूची में प्रविष्टियों को सुरक्षित रूप से हटाने में सक्षम था; मॉड्यूल "प्रोजेक्ट बाइटकोड संस्करण" का उपयोग करने के लिए वापस गिरता है।
बिर्चलैब्स

ये संख्या अप्रत्याशित रूप से मेरे लिए वापस 1.5 हो गई है। Pom.xml फ़ाइल में केवल संकलक स्रोत और लक्ष्य संस्करणों की हार्ड कोडिंग लगातार काम करती है।
शेल्डनक्रेगर

इस स्क्रीनशॉट के शीर्ष के पास "प्रोजेक्ट बायटेकोड संस्करण" सेटिंग, साथ ही हाइलाइट किए गए "लक्ष्य बायटेकोड संस्करण" पर ध्यान दें।
बेसिल बॉर्क

@Birchlabs धन्यवाद, मुझे लगता है कि यह सही उत्तर है।
chrips

1
यह एकमात्र समाधान था जिसने मेरे लिए समस्या को ठीक किया, IntelliJ IDEA 2019.1
जोओ रोचा दा सिल्वा

19

वैकल्पिक रूप से, आप इसे अपने pom.xml में जोड़कर उपयुक्त जावा संस्करण के साथ मावेन-कंपाइलर-प्लगइन लागू कर सकते हैं:

<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>

यह प्रोजेक्ट डिलीट करने से बाहर निकलने के बाद काम करता है। .eaea फोल्डर और .iml फाइल सभी को फिर से प्रोजेक्ट खोलते समय रीक्रिएट किया जाता है।
एंड्रयू

1
विचार में "ताज़ा मावेन" बटन दबाकर काम करना चाहिए।
ओल्गामासीज़ेक

@OlgaMaciaszek को हल करने के लिए काम करना आवश्यक था। धन्यवाद!
payne

14

मैंने नीचे दिए अनुसार Intellij IDEA में परिवर्तन करने की कोशिश की:

1।

File >> Settings >> Build, Execution, Deployment >> Compiler >> Java Compiler >> project bytecode version: 1.8 >> Per-module bytecode version: 1.8

2।

File >> Project Structure >> Project Settings >> Project >> SDK : 1.8, Project Language : 8 - Lambdas
File >> Project Structure >> Project Settings >> Modules >> abc : Language level: 8 - Lambdas

लेकिन कुछ भी काम नहीं किया, जैसे ही मैंने इसे सहेजा, यह संस्करणों को जावा 1.5 पर वापस कर दिया।

हालाँकि, रूट (प्रोजेक्ट स्तर) के लिए नीचे की पंक्तियों को जोड़कर pom.xml ने मुझे उपरोक्त समस्या को हल करने के लिए काम किया: (दोनों विकल्पों ने मेरे लिए काम किया)

विकल्प 1:

<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

विकल्प 2:

<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>

10

फ़ाइल-> परियोजना संरचना-> परियोजना सेटिंग्स-> परियोजना-> परियोजना भाषा स्तर

फ़ाइल-> परियोजना संरचना-> परियोजना सेटिंग्स-> मॉड्यूल-> भाषा स्तर

ड्रॉप डाउन का उपयोग करके स्तर बदलें


4

अपनी कमांड लाइन (यूनिक्स टर्मिनल) में अपने प्रोजेक्ट रूट फ़ोल्डर में जाएं, और ऐसा करें

find . -type f -name '*.iml' -exec sed -i '' s/JDK_1_5/JDK_1_8/g {} +

यह आपकी सभी परियोजना में भाषा स्तर की संपत्ति को बदल देगा। जावा फाइल 1.5 से जावा 1.8 तक।


अभी तक निश्चित नहीं है, लेकिन आपको compiler.xmlपरियोजना की जड़ में JDK संस्करण को भी बदलने की आवश्यकता हो सकती है (IntelliJ 2017.2):sed 's/target="1.5"/target="1.8"/g' .idea/compiler.xml
ऑलेक्ज़ेंडर

compiler.xml आपकी परियोजना के लिए विशिष्ट हो सकता है। यह कमांड केवल * .iml फाइलों को टारगेट करता है जिनकी केवल इंटेलीज द्वारा जरूरत होती है। आपको अपने maven pom.xml में या अपने मामले में कंपाइलर.xml IDE से स्वतंत्र भाषा सेटिंग समायोजित करनी पड़ सकती है।
सहदीप सांभरजू

1
@SaideepSambaraju compiler.xml मेरे द्वारा देखे गए किसी भी निर्माण योग्य विचार परियोजना में मौजूद है। मैं जो देख रहा हूं, यह फाइल सेटिंग्स-> कंपाइलर (लिनक्स) प्रेफरेंस-> कंपाइलर (मैकओएस) का मॉडल है। आप स्क्रिप्ट द्वारा लक्ष्य संस्करण को बदलने के लिए इसका उपयोग कर सकते हैं क्योंकि ओलेकेंडर ने यूआई के बिना या हाथ से कहा।
सर्गेई सर्जसैन

@SergeySargsyan - मैंने अभी इसकी जाँच की है, यह .idea फ़ोल्डर में है जिसे मैं खोज कर नहीं पाया। इस पर ध्यान दिलाने के लिए धन्यवाद।
सहदीप सांभरजू

2

सबसे पहले, आपको "प्रोजेक्ट बायटेकोड संस्करण" के तहत बदलना होगा File > Settings ,Compiler > Java Compiler

दूसरा, एक पूर्ण पुनर्निर्माण करें।


2

मुझे एक ही समस्या है लेकिन अलग स्थिति के साथ। मैं कमांड लाइन ( mvn clean install) में मावेन के साथ किसी भी मुद्दे के बिना संकलन कर सकता हूं , लेकिन इंटेलीज में मुझे हमेशा "java: diamond operator is not supported in -source 1.5"कंपाइल एरर मिला, इसके बावजूद मैंने pom.xml में जावा 1.8 के साथ मावेन-कंपाइलर-प्लगइन सेट किया है।

यह पता चला कि मेरे मावेन की सेटिंग्स में रिमोट रिपॉजिटरी सेटिंग है। xml, जो कि प्रोजेक्ट पर निर्भर करता है, लेकिन इंटेलीज अपने मावेन का उपयोग करता है जिसकी मेरे स्थानीय मावेन के साथ समान सेटिंग नहीं है।

इसलिए मेरा समाधान Settings -> Build, execution, Deployment -> Maven -> Maven home directoryस्थानीय मावेन का उपयोग करने के लिए इंटेलीज की मावेन सेटिंग ( ) को बदल रहा था ।


2

IntelliJ कम्युनिटी एडिशन 2019.02 में, निम्नलिखित सेटिंग्स को बदलना मेरे लिए काम किया

  1. अद्यतन फ़ाइल-> परियोजना संरचना-> परियोजना सेटिंग्स-> परियोजना-> परियोजना भाषा स्तर जावा 11 तक (जावा संस्करण में अपडेट करें जिसे आप अपनी परियोजना में उपयोग करना चाहते हैं) ड्रॉप डाउन का उपयोग कर।

  2. अद्यतन फ़ाइल-> परियोजना संरचना-> परियोजना सेटिंग्स-> मॉड्यूल-> भाषा स्तर

  3. अद्यतन फ़ाइल-> सेटिंग्स-> निर्माण, निष्पादन, तैनाती -> संकलक -> जावा संकलक-> परियोजना बाइटकोड संस्करण जावा 11 तक।

  4. फ़ाइल-> सेटिंग्स-> बिल्ड, निष्पादन, परिनियोजन -> कंपाइलर -> जावा कंपाइलर-> प्रति मॉड्यूल बाइट कोड संस्करण के तहत सभी प्रविष्टियों के लिए लक्ष्य संस्करण अपडेट करें।


0

मेरे पास IntelliJ 2017 में मेरे लिए निम्नलिखित संपत्ति थी

  <properties>
        <java.version>1.8</java.version>       
  </properties>

यह केवल तभी काम करता है जब आप स्प्रिंग बूट जैसे पैरेंट प्रोजेक्ट का उपयोग करते हैं।
18

0

एक और बात जो इसका कारण बन सकती है versionवह है <parent>परियोजना का गलत होना ।

मेरे मामले में यह एक गैर-मौजूदा परियोजना की ओर इशारा कर रहा था और किसी कारण से इंटेलीजे ने सेटिंग्स में 1.5 पर डाउनग्रेड किया और बाद में जब मैंने इसे ठीक किया, तो यह अभी भी 5 के रूप में लक्ष्य कोड संस्करण की व्याख्या कर रहा था (इसे 11 पर सेट करने के बावजूद)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.