एक्लिप्स में जावा 1.5 के बजाय डिफ़ॉल्ट रूप से जावा 1.5 का उपयोग करने के लिए मावेन परियोजना को किन कारणों से आयात किया गया है और मैं यह कैसे सुनिश्चित कर सकता हूं?


209

मैंने एक मावेन परियोजना का आयात किया और जावा 1.5 का उपयोग किया, भले ही मैंने अपने ग्रहण डिफ़ॉल्ट के रूप में 1.6 कॉन्फ़िगर किया हो Preferences->Java->Installed JREs

जब मैंने 1.6 जेआरई का उपयोग करने के लिए मावेन परियोजना को बदल दिया, तो अभी भी बिल्ड त्रुटियों को छोड़ दिया गया था जब परियोजना जावा 1.5 का उपयोग कर रही थी (मैंने पहले इन बिल्ड त्रुटियों का वर्णन किया था: मेरे पास m2eclipse के साथ त्रुटियां हैं, लेकिन कमांड लाइन पर maven2 के साथ नहीं। - क्या मेरा m2eclipse गलत है? )

मैं प्रोजेक्ट को हटाने जा रहा हूं और फिर से कोशिश करूंगा लेकिन मैं इस बार यह सुनिश्चित करना चाहता हूं कि यह जावा 1.6 का उपयोग शुरू से यह देखने के लिए करे कि क्या यह बिल्ड समस्याओं को समाप्त करता है।

जब मैं इसे आयात करता हूं, तो मैं यह सुनिश्चित कर सकता हूं कि प्रोजेक्ट जावा 1.6 का उपयोग करता है?


4
m2eclipse को अनदेखा करता है जिसे आप ग्रहण डिफ़ॉल्ट के लिए कॉन्फ़िगर करते हैं। यह हमेशा डिफ़ॉल्ट रूप से 1.5 का उपयोग करेगा। हालाँकि आपके मामले में प्रोजेक्ट मावेन-कंपाइलर-प्लगइन का उपयोग करता है और संस्करण को स्पष्ट रूप से 1.5 पर सेट करता है। आपको पोम में बदलाव करना होगा और संस्करण को बदलने के लिए प्रोजेक्ट कॉन्फ़िगरेशन को अपडेट करना होगा। हालाँकि मैंने पहले ही यह कोशिश कर ली थी और यह मेरे लिए काम नहीं कर रहा था। मुझे पूरा यकीन है कि आपके अन्य प्रश्न में दूसरों ने जो कहा है उसके बावजूद यह समस्या नहीं है।
राउल ड्यूक

1
नहीं, m2eclipse हमेशा 1.5 के लिए डिफ़ॉल्ट नहीं होगा, यह मावेन-कंपाइलर-प्लगइन की सेटिंग्स में डिफ़ॉल्ट होगा।
पास्कल थिवेंट

1
आप मावेन-कंपाइलर-प्लगइन की सेटिंग्स कैसे बदलते हैं?
लोकतौर

जवाबों:


248

M2eclipse प्लगइन ग्रहण चूक का उपयोग नहीं करता है, m2eclipse प्लगइन POM से सेटिंग्स प्राप्त करता है। इसलिए यदि आप चाहते हैं कि ग्रहण के तहत आयात किए जाने पर जावा 1.6 सेटिंग्स का उपयोग करने के लिए मावेन परियोजना को कॉन्फ़िगर किया जाए maven-compiler-plugin, जैसा कि मैंने पहले ही सुझाया था, उचित रूप से कॉन्फ़िगर करें :

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

यदि आपकी परियोजना पहले से ही आयात की गई है, तो प्रोजेक्ट कॉन्फ़िगरेशन ( प्रोजेक्ट पर राइट-क्लिक करें फिर Maven V अपडेट प्रोजेक्ट कॉन्फ़िगरेशन )।


1
कृपया चिल्लाओ मत। वह सिर्फ असभ्य है। इसने परियोजना को हटाने और फिर से आयात करने के बाद काम किया। लेकिन अन्यथा नहीं।
राउल ड्यूक

6
@Raoul यदि आपने प्रोजेक्ट कॉन्फ़िगरेशन को अपडेट किया है तो प्रोजेक्ट को फिर से देखे बिना काम करता है । मैंने 3 बार यह परीक्षण किया और यह सिर्फ मेरी मशीन पर काम करता है।
पास्कल थिवेंट

जैसा कि स्पष्ट है कि पास्कल का उत्तर है (I plus 1'd) यह 'अपडेट प्रोजेक्ट कॉन्फ़िगरेशन' सभी परिस्थितियों में काम नहीं करता है क्योंकि मुझे प्रोजेक्ट को भी हटाना था, और मैंने बहुत सी अन्य चीजों की कोशिश की (शायद एक बग) ग्रहण के एक संस्करण में)
version:

नए जावा संस्करणों के लिए, इस उत्तर को देखें
लाइन

33

मैंने इसे परियोजना विवरण के नीचे अपने pom.xml में जोड़ा और यह काम किया:

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

1
यह स्वीकृत उत्तर की तुलना में सरल है और मेरे लिए भी अच्छा था।
ईंट

1
यह मेरे लिए काम किया लेकिन स्वीकृत जवाब से काम नहीं चला।
संजय सिंह

1
इसके और मावेन-कंपाइलर-प्लगइन के बीच अंतर क्या है (स्वीकृत उत्तर के अनुसार)? मेरे लिए दोनों तरीके काम कर रहे हैं।
आमिर रिज़वान

यदि आप जावा 9 का उपयोग कर रहे हैं, तो ध्यान रखें कि संस्करण क्रमांकन बदल गया है। इसलिए 1.9 के बजाय 9 का उपयोग करें। <properties> <maven.compiler.source>9</maven.compiler.source> <maven.compiler.target>9</maven.compiler.target> </properties>
५०

मैंने सोचा कि एक संपत्ति "java.version" सेट करना और "मावेन-कंपाइलर-प्लगइन" कॉन्फ़िगरेशन के बिल्ड कॉन्फ़िगरेशन में इसका उपयोग करना पर्याप्त था। जाहिर है, "maven.compiler.source" और "maven.compiler.target" गुणों में कुछ एक्लिप्स मावेन प्लगइन इंटरैक्शन होना चाहिए क्योंकि समस्या अभी गायब हो गई है।
जेसनटालोटा

29

मैं पहले से उपलब्ध कराए गए उत्तर में कुछ जोड़ना चाहता था। डिफ़ॉल्ट रूप से मावेन -कंपाइलर-प्लगइन जावा 1.5 का उपयोग करके आपकी परियोजना को संकलित करेगा, जहां एम 2 की जानकारी मिलती है।

इसीलिए आपको अपने प्रोजेक्ट में maven-compiler-plugin को स्पष्ट रूप से किसी अन्य चीज़ के साथ 1.5 घोषित करना होगा । आपके प्रभावी pom.xmlरूप से मावेन-कंपाइलर-प्लगइन में डिफ़ॉल्ट सेट का उपयोग किया जाएगा pom.xml


6
मेरे लिए यह और अधिक स्पष्ट रूप से उत्तर देता है "जब मैं एक नया मैवेन प्रोजेक्ट बनाता हूं तो यह 1.5 क्यों है?"
डॉन

1
@LIttleAncientForestKami 3.7.0 के साथ सत्यापित किया गया है, अब तक मूल्यों को स्थिरांक के रूप में सेट किया जाता है DEFAULT_SOURCEऔर DEFAULT_TARGETफिर भी दोनों 1.5 पर सेट होते हैं।
एडम बर्ली

अब यह 1.6 होना चाहिए, है ना? मुझे आश्चर्य है कि यह अभी भी मेरे लिए 1.5 का उपयोग करने लगता है।
लाइन

@ लीन: नहीं, यह संभावित रूप से 1.5 होगा जब तक ज्ञात मावेन-पद्य के अंत तक सुपर प्रभावी माता-पिता पोम नहीं बदल जाएंगे।
निकोलस

क्या यह विडंबना है? ;) जो साइट उत्तर में जुड़ी हुई है वह कहती है "यह भी ध्यान दें कि वर्तमान में डिफ़ॉल्ट स्रोत सेटिंग 1.6 है और डिफ़ॉल्ट लक्ष्य सेटिंग 1.6 है"
लाइन

27
<project>

    <!-- ... -->

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

</project>

8
इनसाइड <बिल्ड> </ बिल्ड>
फिलिप कामिकेज़

यह उत्तर पसंद नहीं है, क्योंकि यह केवल कोड है, और मुझे स्वीकृत एक पर लाभ नहीं दिखता है (शायद इसलिए कि इसका वर्णन नहीं किया गया है ..)
लाइन '

8

यहाँ java 1.5 का मूल कारण है:

यह भी ध्यान दें कि वर्तमान में डिफ़ॉल्ट स्रोत सेटिंग 1.5 है और डिफ़ॉल्ट लक्ष्य सेटिंग 1.5 है, स्वतंत्र रूप से JDK के साथ आप मावेन के साथ चलाते हैं। यदि आप इन चूक को बदलना चाहते हैं, तो आपको स्रोत और लक्ष्य निर्धारित करना चाहिए।

संदर्भ: अपाचे मेवम कंपाइलर प्लगिन

निम्नलिखित विवरण हैं:

सादा pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
             http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>

    <groupId>com.pluralsight</groupId>
    <artifactId>spring_sample</artifactId>
    <version>1.0-SNAPSHOT</version>

</project>

निम्नलिखित प्लगइन एक विस्तारित पोम संस्करण (प्रभावी पीओएम) से लिया गया है,

यह इस कमांड द्वारा प्राप्त किया जा सकता है कमांड लाइन से C:\mvn help:effective-pomमैं सिर्फ एक पूरे पोम के बजाय एक छोटा सा स्निपेट यहां डाल देता हूं।

    <plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <executions>
      <execution>
        <id>default-compile</id>
        <phase>compile</phase>
        <goals>
          <goal>compile</goal>
        </goals>
      </execution>
      <execution>
        <id>default-testCompile</id>
        <phase>test-compile</phase>
        <goals>
          <goal>testCompile</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

यहां तक ​​कि आप यह नहीं देखते हैं कि जावा संस्करण को कहां परिभाषित किया गया है, अधिक खुदाई करने देता है ...

प्लगइन डाउनलोड करें, अपाचे मावेन कंपाइलर प्लगइन »3.1 जार में उपलब्ध है और इसे 7-ज़िप की तरह किसी भी फ़ाइल संपीड़न उपकरण में खोलें।

जार और खोज को पार करें

plugin.xml

फ़ोल्डर के अंदर फ़ाइल

Maven-संकलक-प्लगइन-3.1.jar \ META-INF \ Maven \

अब आपको फ़ाइल में निम्न अनुभाग दिखाई देगा,

      <configuration>
    <basedir implementation="java.io.File" default-value="${basedir}"/>
    <buildDirectory implementation="java.io.File" default-value="${project.build.directory}"/>
    <classpathElements implementation="java.util.List" default-value="${project.testClasspathElements}"/>
    <compileSourceRoots implementation="java.util.List" default-value="${project.testCompileSourceRoots}"/>
    <compilerId implementation="java.lang.String" default-value="javac">${maven.compiler.compilerId}</compilerId>
    <compilerReuseStrategy implementation="java.lang.String" default-value="${reuseCreated}">${maven.compiler.compilerReuseStrategy}</compilerReuseStrategy>
    <compilerVersion implementation="java.lang.String">${maven.compiler.compilerVersion}</compilerVersion>
    <debug implementation="boolean" default-value="true">${maven.compiler.debug}</debug>
    <debuglevel implementation="java.lang.String">${maven.compiler.debuglevel}</debuglevel>
    <encoding implementation="java.lang.String" default-value="${project.build.sourceEncoding}">${encoding}</encoding>
    <executable implementation="java.lang.String">${maven.compiler.executable}</executable>
    <failOnError implementation="boolean" default-value="true">${maven.compiler.failOnError}</failOnError>
    <forceJavacCompilerUse implementation="boolean" default-value="false">${maven.compiler.forceJavacCompilerUse}</forceJavacCompilerUse>
    <fork implementation="boolean" default-value="false">${maven.compiler.fork}</fork>
    <generatedTestSourcesDirectory implementation="java.io.File" default-value="${project.build.directory}/generated-test-sources/test-annotations"/>
    <maxmem implementation="java.lang.String">${maven.compiler.maxmem}</maxmem>
    <meminitial implementation="java.lang.String">${maven.compiler.meminitial}</meminitial>
    <mojoExecution implementation="org.apache.maven.plugin.MojoExecution">${mojoExecution}</mojoExecution>
    <optimize implementation="boolean" default-value="false">${maven.compiler.optimize}</optimize>
    <outputDirectory implementation="java.io.File" default-value="${project.build.testOutputDirectory}"/>
    <showDeprecation implementation="boolean" default-value="false">${maven.compiler.showDeprecation}</showDeprecation>
    <showWarnings implementation="boolean" default-value="false">${maven.compiler.showWarnings}</showWarnings>
    <skip implementation="boolean">${maven.test.skip}</skip>
    <skipMultiThreadWarning implementation="boolean" default-value="false">${maven.compiler.skipMultiThreadWarning}</skipMultiThreadWarning>
    <source implementation="java.lang.String" default-value="1.5">${maven.compiler.source}</source>
    <staleMillis implementation="int" default-value="0">${lastModGranularityMs}</staleMillis>
    <target implementation="java.lang.String" default-value="1.5">${maven.compiler.target}</target>
    <testSource implementation="java.lang.String">${maven.compiler.testSource}</testSource>
    <testTarget implementation="java.lang.String">${maven.compiler.testTarget}</testTarget>
    <useIncrementalCompilation implementation="boolean" default-value="true">${maven.compiler.useIncrementalCompilation}</useIncrementalCompilation>
    <verbose implementation="boolean" default-value="false">${maven.compiler.verbose}</verbose>
    <mavenSession implementation="org.apache.maven.execution.MavenSession" default-value="${session}"/>
    <session implementation="org.apache.maven.execution.MavenSession" default-value="${session}"/>
  </configuration>

उपरोक्त कोड को देखें और निम्नलिखित 2 पंक्तियों का पता लगाएं

    <source implementation="java.lang.String" default-value="1.5">${maven.compiler.source}</source>
    <target implementation="java.lang.String" default-value="1.5">${maven.compiler.target}</target>

सौभाग्य।


1
हाँ। इसका ग्रहण से कोई लेना-देना नहीं है। उदाहरण के लिए, आपको IntelliJ IDEA में एक ही मुद्दा मिलता है अगर आर्टवर्क के साथ एक मावेन प्रोजेक्ट बनाएं quickstart
जन हेटिच

नमस्ते, समस्या की जड़ को पोस्ट करने के लिए धन्यवाद:) मैं वास्तव में इसकी सराहना करता हूं!
इवानगाबेस

6

आपका JRE शायद रन कॉन्फ़िगरेशन में परिभाषित किया गया था। निर्माण JRE को बदलने के लिए ग्रहण में इन चरणों का पालन करें।

1) प्रोजेक्ट पर राइट क्लिक करें और रन अस > रन कॉन्फ़िगरेशन चुनें

2) रन कॉन्फ़िगरेशन विंडो से, बाएं पैनल पर अपने प्रोजेक्ट बिल्ड कॉन्फ़िगरेशन का चयन करें। दाईं ओर, आपको विभिन्न टैब दिखाई देंगे: मुख्य, JRE, ताज़ा, स्रोत, ...

3) JRE टैब पर क्लिक करें, आपको कुछ इस तरह से देखना चाहिए

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

4) डिफ़ॉल्ट रूप से, कार्य डिफ़ॉल्ट JRE ( प्राथमिकता के तहत डिफ़ॉल्ट के रूप में आपके द्वारा चयनित JRE-> जावा-> स्थापित JRE ) का उपयोग किया जाएगा। यदि आप किसी अन्य स्थापित JRE का उपयोग करना चाहते हैं, तो वैकल्पिक JRE चेकबॉक्स पर टिक करें और ड्रॉपडाउन से अपना पसंदीदा JRE चुनें।


इस उत्तर के लिए धन्यवाद, मेरा रन कॉन्फ़िगरेशन कार्यक्षेत्र डिफ़ॉल्ट के साथ चल रहा था इसलिए यह वास्तव में मदद करता है!
दामिर सिगनोविक-जानकोविच

यह मदद की, विश्वास नहीं कर सकता कि हम इस अनदेखी!
फिल ओओ

3

स्प्रिंगबूट में सबसे सरल समाधान

यदि आप स्प्रिंगबूट का उपयोग करते हैं, तो मैं आपको सबसे सरल तरीका दूंगा:

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

फिर, अपने ग्रहण प्रोजेक्ट पर राइट क्लिक करें: Maven> अपडेट प्रोजेक्ट> pom.xml से प्रोजेक्ट कॉन्फ़िगरेशन अपडेट करें

ऐसा करना चाहिए।


2

परियोजना विशिष्ट सेटिंग्स

एक और जगह जहां यह गलत हो सकता है, वह एक्लिप्स में प्रोजेक्ट विशिष्ट सेटिंग्स में है।

  1. परियोजना के गुण: अपनी परियोजना और निम्न में से एक पर क्लिक करें:

    • Alt + दर्ज करें
    • मेनू> परियोजना> गुण
    • अपने प्रोजेक्ट> प्रोजेक्ट गुण (मेनू में अंतिम आइटम) पर राइट क्लिक करें
  2. "जावा कंपाइलर" पर क्लिक करें

  3. "प्रोजेक्ट विशिष्ट सेटिंग्स सक्षम करें" को अनचेक करें (या उन सभी को हाथ से बदलें)।

ग्राहकों की आवश्यकताओं के कारण हमने उन्हें अपनी परियोजनाओं को 1.6 में बनाए रखने में सक्षम बनाया। जब इसे 1.7 में अपग्रेड करने की आवश्यकता थी, तो हमारे पास एक कठिन समय था क्योंकि हमें सभी जगह जावा संस्करण को बदलने की आवश्यकता थी:

  • परियोजना पोम
  • ग्रहण कार्यक्षेत्र डिफ़ॉल्ट
  • परियोजना विशिष्ट सेटिंग्स
  • आभासी मशीन को निष्पादित करना (1.6 हर चीज के लिए उपयोग किया गया था)

1

एक और संभावित कारण यदि आप बंडलों के निर्माण के लिए टायको और मावेन का उपयोग कर रहे हैं, तो आपके पास Bundle-RequiredExecutionEnvironmentप्रकट फ़ाइल ( manifest.mf) में गलत निष्पादन वातावरण ( ) है। उदाहरण के लिए:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Engine Plug-in
Bundle-SymbolicName: com.foo.bar
Bundle-Version: 4.6.5.qualifier
Bundle-Activator: com.foo.bar.Activator
Bundle-Vendor: Foobar Technologies Ltd.
Require-Bundle: org.eclipse.core.runtime,
 org.jdom;bundle-version="1.0.0",
 org.apache.commons.codec;bundle-version="1.3.0",
 bcprov-ext;bundle-version="1.47.0"
Bundle-RequiredExecutionEnvironment: JavaSE-1.5
Export-Package: ...
...
Import-Package: ...
...

मेरे मामले में बाकी सब ठीक था। कंपाइलर प्लगइन्स (सामान्य मावेन और टाइको के रूप में अच्छी तरह से) सही ढंग से सेट किए गए थे, फिर भी एम 2 ने प्रकट होने के कारण पुराने अनुपालन स्तर उत्पन्न किया। मुझे लगा कि मैं अनुभव साझा करता हूं।


1

मैंने पाया कि मेरा मुद्दा किसी ने फ़ाइल .project और .classpath के लिए प्रतिबद्ध था, जिसमें डिफ़ॉल्ट JRE के रूप में Java1.5 का संदर्भ था।

<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5">
    <attributes>
        <attribute name="owner.project.facets" value="java"/>
    </attributes>
</classpathentry>

परियोजना को बंद करके, फ़ाइलों को हटाकर, और फिर मावेन परियोजना के रूप में फिर से आयात करना, मैं परियोजना को कार्यक्षेत्र JRE या संबंधित jdk का उपयोग करने के लिए ठीक से सेट करने में सक्षम था, इसके बिना 1.5 पर वापस लौटना। इस प्रकार, अपने SVN .project और .classpath फ़ाइलों की जाँच करने से बचें

आशा है कि यह दूसरों की मदद करता है।


0

यदि आप यह सुनिश्चित करना चाहते हैं कि एक्लिप्स में नए बनाए गए प्रोजेक्ट या इम्पोर्टेड प्रोजेक्ट जावा 1.5 की तुलना में एक अन्य डिफ़ॉल्ट जावा संस्करण का उपयोग करते हैं, तो आप मावेन-कंपाइलर-प्लगइन में कॉन्फ़िगरेशन को बदल सकते हैं।

  • फ़ोल्डर पर जाएं .m2 / रिपॉजिटरी / org / एपाचे / मावेन / प्लगइन्स / मावेन-कंपाइलर-प्लगइन / 3.1
  • ज़िप प्रोग्राम के साथ ओपन मैवेन-कंपाइलर-प्लगइन-3.1.जर।
  • META-INF / maven पर जाएं और plugin.xml खोलें
  • निम्नलिखित पंक्तियों में:
    <स्रोत कार्यान्वयन = "java.lang.String" डिफ़ॉल्ट-मान = "1.5"> $ {maven.compiler.source} </ स्रोत>
    <लक्ष्य कार्यान्वयन = "java.lang.String" डिफ़ॉल्ट-मान = "1.5"> $ {maven.compiler.target} </ लक्ष्य>

  • डिफ़ॉल्ट-मान को 1.6 या 1.8 या जो कुछ भी आप चाहते हैं उसे बदलें।

  • फ़ाइल को सहेजें और सुनिश्चित करें कि इसे वापस ज़िप फ़ाइल में लिखा गया है।

अब से सभी नई मावेन परियोजनाओं में आपके द्वारा निर्दिष्ट जावा संस्करण का उपयोग किया जाता है।

जानकारी निम्नलिखित ब्लॉग पोस्ट से है: https://sandocean.wordpress.com/2019/03/22/directly-generating-maven-projects-in-eclipse-with-java-version-newer-than-1-5/


0

JDK का संस्करण बदलने के लिए, आप यह कर सकते हैं:

1- प्रोजेक्ट> प्रॉपर्टीज
2- जावा बिल्ड पाथ
3- लाइब्रेरियों में जाएं, जेआरई सिस्टम चुनें ... और एडिट पर क्लिक करें
4- अपना उपयुक्त वर्जन चुनें और वैलिडेट करें।

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