जावा संस्करण स्वचालित रूप से जावा अपडेट के बाद जावा 1.5 में बदल जाता है


121

मैं आईडीई के रूप में ग्रहण का उपयोग कर रहा हूं। जब मैं प्रोजेक्ट पर राइट क्लिक करता हूं और फिर maven अपडेट पर अपना जावा संस्करण परिवर्तन 1.5 पर क्लिक करता हूं। यहाँ मैंने अभी तक क्या किया है, मैंने यहाँ सूचीबद्ध सभी चरणों का पालन किया है

http://qussay.com/2013/09/13/solving-dynamic-web-module-3-0-requires-java-1-6-or-newer-in-maven-projects/

  1. मैंने "जावा बिल्ड पाथ" को "वर्कस्पेस डिफ़ॉल्ट jre 1.8.0_25" में बदल दिया
  2. फिर "जावा कंपाइलर" को 1.8 में बदल दिया
  3. फिर "प्रोजेक्ट पहलू"> जावा> 1.8 बदल दिया
  4. परिवर्तित pom.xml जावा संस्करण 1.8 के लिए
    <build>
        <plugins>
            <plugin>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-maven-plugin</artifactId>
                <version>9.1.3.v20140225</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugin</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

इस सब के बाद जब मैं "मावेन अपडेट" पर क्लिक करता हूं तो मेरा जावा संस्करण अपने आप ही 1.5 में बदल जाता है। उपरोक्त चरणों में भी, पहले दो चरण का संस्करण भी स्वचालित रूप से 1.5 में बदल जाता है। मैं इसे कैसे ठीक करूं?

जवाबों:


222

अपनी pom.xmlफ़ाइल खोलें और उस पर निम्न पंक्तियाँ जोड़ें:

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

1.8आपके वर्तमान JDK / JRE का जावा संस्करण कहां है। ऐसा करने का एक और तरीका है एक जोड़ रहा है <build>के साथ maven-compile-pluginके रूप में

<build>
<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.2</version> <!-- or whatever current version -->
    <configuration>
      <source>1.8</source>
      <target>1.8</target>
    </configuration>
  </plugin>
</plugins>
</build>

संपादित करें

यदि आप इसे जावा संस्करण 9+ के साथ काम करने का तरीका खोज रहे हैं, तो कृपया नीचे दिए गए @ JDelorean के उत्तर पर एक नज़र डालें और साथ ही उसे अपवोट देना न भूलें :)


4
मुझे लगता है कि मैंने पहले से ही दूसरा तरीका किया है और मैंने कोड भी पोस्ट किया है। आप उस कोड में क्या बदला है, यह मत देखिए
asdlfkjlkj

1
हाँ। जब मैंने उत्तर दिया तो आपने कोड पोस्ट नहीं किया है। तो, मेरे उत्तर के पहले भाग को जोड़ें। propertiesटैग। यदि आपके POM में पहले से ही एक propertiesटैग है तो उसके अंदर टैग जोड़ें, यह ठीक काम करना चाहिए।
जॉर्ज कैंपस

@asdlfkjlkj आपका ग्रहण एम्बेडेड मावेन या बाहरी मावेन इंस्टॉलेशन का उपयोग कर रहा है? एक अन्य प्रश्न आपका ग्रहण एक JRE या JDK की ओर इशारा कर रहा है? यह ग्रहण + मावेन के बारे में दो प्रश्न हैं जो सभी अंतर बनाते हैं।
जॉर्ज कैंपस

@ जोर्जकैंपोस - मैंने एक नया प्रश्न पोस्ट किया। क्या उस पर कोई विचार है? stackoverflow.com/questions/42855512/…
ऐशू

@ जोर्जकैम्पोस मुझे कहां maven-complier-pluginजोड़ना है <build>? धन्यवाद
夢 の

23

एक ही मुद्दा था जब मैंने जावा 9 स्थापित किया था। मेरी परियोजना J2SE-1.5 निष्पादन पर्यावरण के लिए डिफ़ॉल्ट होगी। अजीब बात है, जावा 9 अनुपालन स्तर को पिछले संस्करणों की तरह संदर्भित नहीं किया गया है, अर्थात "1.8", लेकिन "9" के रूप में। इसलिए मुझे अपने गुण और मावेन कंपाइलर प्लगइन को तदनुसार प्रदान करना पड़ा:

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

तथा

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

इससे समस्या हल हो गई है।


1
जावा 10+ के लिए भी सही है और यह जोड़ना चाहते हैं कि बहु-मॉड्यूल मावेन परियोजना केवल मूल पीओएम में आवश्यक है।
मिमीनी

जावा 9 और इसके बाद के संस्करण में, एक नया --release <version>संकलक विकल्प है, जिसे स्रोत / लक्ष्य पर पसंद किया जाता है। इसे मावेन-कंपाइलर प्लगइन में maven.compiler.releaseसंपत्ति या <release>सेटिंग के साथ कॉन्फ़िगर किया जा सकता है । देखें: stackoverflow.com/questions/43102787/…
थॉमस टेलर

7

इस समस्या का मूल कारण यह है कि यदि किसी भी कारण से एक्लिप्स । Pom से .classpath फ़ाइल को जनरेट / अपडेट करते समय संपत्ति के लिए एक वैध मूल्य को हल नहीं कर सकता है maven.compiler.source, तो यह बस उपयोग करने के लिए डिफ़ॉल्ट होगा org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5

जैसा कि @ जॉर्ज-कैम्पोस द्वारा स्पष्ट रूप से उत्तर दिया गया है , उस संपत्ति को निर्धारित करने के कई तरीके हैं।

हालांकि, जॉर्ज का जवाब नहीं था दिखाई मेरे लिए काम करने के लिए। यहाँ मेरी सेटिंग्स थीं:

<properties>
    <javaVersion>1.8</javaVersion>
    <maven.compiler.source>${java.version}</maven.compiler.source>
    <maven.compiler.target>${java.version}</maven.compiler.target>
</properties>

...

बिल्कुल सही। ${java.version}है कभी नहीं (पूरी तरह से अलग) संपत्ति को हल करने के लिए जा रहा javaVersionहै और ग्रहण संपत्ति पर ध्यान नहीं दिया और डिफ़ॉल्ट इस्तेमाल किया।

जो मुझे " किसी भी कारण से " भाग में वापस लाता है, जिसे मैंने खोला; डेवलपर मूर्खता उन कारणों में से एक हो सकती है।



"डेवलपर मूर्खता उन कारणों में से एक हो सकती है" कहने के लिए डाउनवोटिंग।
ल्यूक हचिसन

मेरे मामले में मैं ग्रहण प्लगइन्स बनाने के लिए मावेन / टाइको का उपयोग कर रहा हूं, और उपरोक्त डिफ़ॉल्ट अंततः मैनिफ़ेस्ट.म.एफ फ़ाइल में निर्दिष्ट निष्पादन वातावरण से प्राप्त किया जा रहा था। निष्पादन के माहौल को बदलकर JavaSE-1.8 ने इस मुद्दे को ठीक कर दिया।
Mat101

3

इस पंक्तियों को अपने pom.xml में जोड़ें, फिर अपने JRE सिस्टम लाइब्रेरी पर राइट क्लिक करें -> गुण -> अपना सही निष्पादन वातावरण जावा 1.8 या उस संस्करण पर सेट करें जिसे आप सेट करना चाहते हैं।

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.2</version> <!-- or whatever current version -->
    <configuration>
      <source>1.8</source>
      <target>1.8</target>
    </configuration>
  </plugin> 

आपका उत्तर गायब है <बिल्ड> <प्लगइन्स> ... आपका उत्तर यहां ... </ प्लगइन्स> </ बिल्ड> जो लोगों के लिए एक स्पष्ट उत्तर बनाता है।
काइल ब्रिडेनस्टाइन

1

मुझे यह समस्या थी। मेरे मामले में <गुण> टैग और नेस्टेड टैग जोर्ज कैम्पोस का उल्लेख गलत जगह पर था। अगर मैंने उन्हें pom.xml फ़ाइल में <hostversion> और <निर्भरता> टैग के बीच रखा, तो यह व्यवहार बंद हो गया।

यदि इन फ़ाइलों का सत्यापन चालू है, तो ग्रहण में उठाया जा सकता है।


1

मैं अपनी टीम के साथी मशीन पर इसी तरह के मुद्दे का सामना करता हूं। वह ग्रहण के पुराने संस्करण का उपयोग कर रहा था, मुझे विश्वास है कि वह केपलर का उपयोग कर रहा था। अपडेट किए जाने के बाद प्रोजेक्ट JRE संस्करण को 1.5 पर बदल दें।

नवीनतम संस्करण के लिए सरल अद्यतन ग्रहण इस समस्या को हल करता है।


हाँ, नहीं। मैं नियॉन चला रहा हूं, मेरी कार्यक्षेत्र सेटिंग्स सभी 1.8 हैं, लेकिन जब मैं मावेन परियोजना को आयात (या अपडेट) करता हूं, तो ग्रहण J2SE-1.5 का उपयोग करने पर जोर देता है।
Antares42

@ Antares42 क्या आप बिना किसी मुद्दे के कमांड लाइन से निर्माण करने में सक्षम हैं? आप कौन सा m2e वर्जन इस्तेमाल कर रहे हैं?
user902383

1
मैं बिना किसी समस्या के कमांड लाइन (या "रन एज़ -> मेवेन बिल्ड ...") का उपयोग करके बना सकता हूं। लेकिन जैसे ही मैं "मावेन -> अद्यतन परियोजना" करता हूं, मुझे उल्लिखित जेआर पुस्तकालय मिलते हैं और ग्रहण परियोजना का निर्माण करने में विफल रहता है। मैं अभी भी मावेन का उपयोग करके निर्माण कर सकता हूं। एक बार जब मैं एक maven.compiler.sourceसंपत्ति को ऊपर दिए गए उत्तर में जोड़ देता हूं , तो सब कुछ ठीक काम करता है। मेरा एम 2 का संस्करण 1.7.1-20161104-1805 है।
Antares42

1

मेरे मामले में (पुराने JBoss डेवलपर स्टूडियो), मुद्दा यह था कि JRE वातावरण में 1.8 (केवल 1.7) शामिल नहीं था। जब मैंने maven-compiler-pluginसंस्करण को 1.7 पर स्विच किया और अद्यतन परियोजना को मावेन किया, तो उसने ग्रहण JRE सिस्टम लाइब्रेरी को 1.7 में अपडेट किया। यहां छवि विवरण दर्ज करें

तो समाधान या तो एक नया आईडीई संस्करण प्राप्त करना है जिसमें एक अंतर्निहित जेआरई वातावरण शामिल है जो 1.8 या बाद का है, या इसे मैन्युअल रूप से स्थापित करने का प्रयास करें (देखें https://stackoverflow.com/a/35204314 )


0

मैं अपने आप को जावा 11 के साथ उस विषय को अपडेट करने की अनुमति देता हूं।

मैंने अपने कंप्यूटर पर OpenJDK11 स्थापित किया है, और मैं इसे एक ऐप में उपयोग करना चाहता था।

मुझे परेशानी हुई क्योंकि ग्रहण ने हमेशा मेरे जेआरई को जावाएसई -1.5 में बदल दिया जब मैंने मावेन के साथ अपनी परियोजना को अद्यतन किया।

जैसा कि आपने कहा था, मैंने सब कुछ सेट कर दिया था, लेकिन मैं हमेशा अपने जावा बिल्ड पाथ "जावा -11-ओपेनजेडक। X86_64" को अपने अल्टरनेट कांटे में से एक के रूप में चुन रहा था। मैंने "निष्पादन वातावरण" JavaSE-10 में चयन करके अपनी समस्या को ठीक किया (लेकिन आपको इस पर डबल क्लिक करना होगा और फिर चित्र के अनुसार दिखाए गए संगत JRE अपने OpenJDK11 संस्करण का चयन करना होगा)। निष्पादन पर्यावरण सेटअप

परियोजना जावा 11 का उपयोग उस चित्र (चित्र) के लिए करेगी, लेकिन आपको pom.xml में जावा-संस्करण के लिए 10 लिखना होगा और परियोजना पहलुओं पर जावा 10 भी सेट करना होगा।


0

मैंने बाज़ार से ग्रहण अपडेट "जावा 12" को स्थापित करने की समस्या को हल कर दिया है। यह केप्लर से लूना तक मेरा ग्रहण पास बनाता है।

उसके बाद, मैं "मावेन अपडेट" समस्या को ठीक करते हुए 1.8 को मानक जेडीके के रूप में सेट करने में सक्षम रहा हूं।


-3

मैंने केप्लेर से ग्रहण को नियॉन में बदल दिया और फिर मावेन -> अपडेट प्रोजेक्ट के साथ अपनी परियोजना को अद्यतन किया।

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