IntelliJ में मावेन के लिए जावा संस्करण कैसे बदलें?


83

मैं मावेन और इंटेलीज आईडीईए दोनों के लिए नया हूं।

मेरे पास जावा में लिखी एक मावेन परियोजना है। जब भी मैं इसे बनाने की कोशिश करता हूं (मावेन प्रोजेक्ट्स विंडो -> लाइफसाइकल -> संकलन -> रन मावेन बिल्ड) मुझे संकलन त्रुटियों की एक श्रृंखला मिलती है:

[ERROR] path/to/file.java:[26,52] lambda expressions are not supported in -source 1.5
(use -source 8 or higher to enable lambda expressions)

मुझे -source पैरामीटर का मान कहाँ बदलना है? मैंने इसे सेटिंग्स में अतिरिक्त पैरामीटर -> कंपाइलर -> जावा कंपाइलर के रूप में जोड़ने की कोशिश की, लेकिन मुझे वही परिणाम मिले।

परियोजना की और मॉड्यूल की भाषा का स्तर दोनों 8.0 पर सेट हैं।

मैं Maven 3.2.3 और IntelliJ IDEA सामुदायिक संस्करण 13.1.2 का उपयोग कर रहा हूं।


क्या आपने इसे pom फ़ाइल में बदल दिया है?
eis

मेरा दृष्टिकोण उन्हें इस तरह से सीधे इंटेलीज में स्थापित करना था: http://stackoverflow.com/a/37648709/5154418
Yumi Koizumi

जवाबों:


118

या आसान, इसे अपने पोम के propertiesसेक्शन में जोड़ें:

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

यह मेरे लिए 2017.2.5 में काम नहीं करता है, जब तक कि मैंने <बिल्ड / कॉन्फ़िगरेशन> टैग का उपयोग नहीं किया।
पावेल वेसलोव

1
IntelliJ सेटिंग्स में से किसी ने भी मेरे लिए कुछ नहीं किया। यह उत्तर केवल एक चीज है जिसने खोज के घंटे के बाद इसे ठीक किया। धन्यवाद!
टिम

12
ठीक काम करता है, लेकिन pom.xml फ़ाइल को फिर से आयात करने के लिए मत भूलना, राइट क्लिक करें -> मावेन -> Reimport
डेविड लिलजग्रेन

यह start.spring.io द्वारा उत्पन्न पोम में डाला जाना चाहिए ! मुझे नहीं पता कि वे ऐसा क्यों नहीं करते हैं। उन्होंने वहां जो भी डाला "<java.version> 1.8 </java.version>" बेकार है।
User007

1
प्लेटफ़ॉर्म सेटिंग में पहले से ही ज़रूरी SDK / JDK ज़रूर रखें।
gkephorus

34

सारांश:

  • 'maven-compiler-plugin' हमेशा काम करते हैं! यह वही है जो मैं आपको उपयोग करने का सुझाव देता हूं।

भाषा के स्तर को बदलने के लिए, का उपयोग करें

<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.4</source>
                <target>1.4</target>
            </configuration>
        </plugin>
    </plugins>
</build>

गुण हमेशा इंटेलीज के भाषा स्तर को नहीं बदलते हैं!

नीचे दिए गए कोड में, 1.4 को maven-compiler-plugin
(Intellij की jdk 1.8 है) का उपयोग करके pom में कॉन्फ़िगर किया गया था और परियोजना का भाषा स्तर 1.4 के अनुसार बदल दिया गया था:

यहां छवि विवरण दर्ज करें

यह डबल-चेक किया गया था! इसका उदाहरण है। अधिकांश समय आप JDK के संस्करण को 1.4 पर डाउनग्रेड नहीं करेंगे!

बेशक, यदि आप संपत्तियों का उपयोग करते हैं, तो आप कहते हैं कि आप 1.8 pom में डालते हैं, तो यदि आप Intellij में 1.8 JDK का उपयोग करते हैं (भाषा स्तर डिफ़ॉल्ट 1.8 है या भाषा डिफ़ॉल्ट रूप से बदल दिया गया था), तो आप 1.8 में कोड कर पाएंगे MUT संकलन पर BUT, गुण दिखाई नहीं देंगे और आप Maven 1.5 को डिफ़ॉल्ट कर देंगे और संकलन सफल नहीं होगा!


Btw और मुझे लगता है कि इससे भ्रम पैदा हुआ, एक्लिप्स maven.compiler.source और maven.compiler.target का समर्थन करता है।
रूडी विंसर्स

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

@ gloomy.penguin: मैंने अभी मावेन क्विकस्टार्ट आर्कटाइप से एक नया आइडिया प्रोजेक्ट बनाया है। फिर मैंने प्रोजेक्ट सेटिंग्स ---> मॉड्यूल पर ध्यान दिया और मैंने 5.0 - 'एनम' कीवर्ड, जेनेरिक, ऑटोबॉक्सिंग आदि को पढ़ा। फिर मैंने स्रोत (1.6) और लक्ष्य (1.6) को मावेन-कंपाइलर-प्लगइन से जोड़ा है और ठीक वैसा ही किया है वही और मैंने इंटरफेस में 6- @ ओवरराइड पढ़ा। मुझे लगता है कि एक भ्रम है। हम डिफॉल्ट एसडीके को बदलना नहीं चाहते हैं। इस बारे में हम कुछ नहीं कर सकते।
रूडी विसेर्स

@gloomy: पेंगुइन: अगर JDK 1.5 को डिफ़ॉल्ट रूप से कॉन्फ़िगर किया गया है और आप 1.6 को पूछने के लिए pom में कॉन्फिगर को बदलते हैं, तो Idea, डिफ़ॉल्ट SDK को 1.6 या 1.7 या 1.8 में नहीं बदलेगा, भले ही आपने इन jdks को Intellij में जोड़ा हो। पोम में कॉन्फ़िगरेशन आइडिया को डिफ़ॉल्ट एसडीके का उपयोग करके स्रोत और लक्ष्य संस्करण को बदलने के लिए कहता है! उदाहरण में चित्र 1.4 में पूछा गया था और डिफ़ॉल्ट jdk 1.8 है और निश्चित रूप से यह ठीक है। आपको डिफ़ॉल्ट jdk सेटअप करना होगा जो आपके द्वारा पोम में कॉन्फ़िगर किए गए संस्करणों के साथ संगत है।
रूडी विसेर्स

@ उदास-पेंगुइन: तो 1.8 सभी कॉन्फ़िगरेशन का समर्थन करेगा (लेकिन 9 !!!) नहीं। आशा है कि इससे सहायता मिलेगी। मैं दोहराता हूं मैंने अभी जांच की है और यह काम करता है। और कृपया प्रोजेक्ट सेटिंग्स ---> मॉड्यूल में परिणाम की जांच करें।
रूडी विसेर्स

7

Pom.xml में नीचे दिखाए गए स्रोत को बदलें

<build>
        <finalName>MQService</finalName>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

6

मुझे नहीं लगता कि सवाल का कोई जवाब चिंता को संबोधित करता है - " । इंटेलीज में ।"

ये रहे चरण: -

  • IntelliJ (या शॉर्टकट) +) में प्राथमिकताएं पर जाएं
  • निर्माण, निष्पादन, तैनाती> मावेन> आयातक - " आयातक के लिए JDK " ड्रॉपडाउन का चयन करें फिर अपने पसंदीदा जावा संस्करण का चयन करें, क्लिक करें लागू करें
  • निर्माण, निष्पादन, तैनाती> मावेन> धावक - " JRE " ड्रॉपडाउन का चयन करें और फिर अपना पसंदीदा जावा संस्करण चुनें, लागू करें पर क्लिक करें
  • ओके पर क्लिक करें

4

रूट (प्रोजेक्ट लेवल) के नीचे की पंक्तियों को जोड़कर 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>

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


1

इसे करने के दो तरीके हैं :

पहला- गुण जोड़ें

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

दूसरा- प्लगइन जोड़ें

<plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
</plugin>

0

भाषा स्तर को बदलने के लिए मजबूर करने के लिए आपको अपने pom.xml में नीचे कोड जोड़ना चाहिए

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>8</source>
                <target>8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

अब intelliJ 2019.3 CE आपके लिए यह करता है यदि आप आयात करने जाते हैं तो alt + दर्ज करें जहां आपको एक विकल्प मिलेगा, जिसमें कहा गया है कि "इस कार्यक्षमता का उपयोग करने के लिए भाषा का स्तर बदलकर 8" करें


0

अपनी रूट डायरेक्टरी और टाइप करें ubuntu टर्मिनल को खोलें:

export JAVA_HOME = <path to jdk>

उदाहरण के लिए, यह मेरे लिए ठीक काम करता है {इंटेलीज टर्मिनल में भी ऐसा ही करें}।

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

सेट मान प्रकार की जाँच करने के लिए echo $JAVA_HOME

मावेन संस्करण प्रकार की जांच करने के लिए: mvn -version

आप इस कमांड को टाइप करके JDKs के सभी पथ पा सकते हैं, और आप JDK संस्करण सेट कर सकते हैं।

sudo update-alternatives --config java

यह भी आप एक ही राशि की जांच java -versionऔर javac -version

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