क्यों मावेन JDK 1.6 का उपयोग करता है, लेकिन मेरा जावा -version 1.7 है


159

मैं maven के लिए नया हूँ, और MacOS के लिए भी।

मैंने अपने टर्मिनल में सेटअप मेवेन किया है, और संस्करण सेटिंग्स प्राप्त करते समय (उपयोग करके mvn -v) ऐसा लगता है कि यह JDK 1.6 का उपयोग करता है, जबकि मेरे पास JDK 1.7 स्थापित है। क्या कुछ गड़बड़ है?

मेरे द्वारा दर्ज आदेश ये हैं:

blues:helloworld Ninja$ java -version
java version "1.7.0_05"
Java(TM) SE Runtime Environment (build 1.7.0_05-b06)
Java HotSpot(TM) 64-Bit Server VM (build 23.1-b03, mixed mode)`
blues:helloworld Ninja$ mvn -v
Apache Maven 3.1.0 (893ca28a1da9d5f51ac03827af98bb730128f9f2; 2013-06-28 10:15:32+0800)
Maven home: /usr/local/Cellar/maven/3.1.0/libexec
Java version: 1.6.0_51, vendor: Apple Inc.
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Default locale: zh_CN, platform encoding: EUC_CN
OS name: "mac os x", version: "10.8.4", arch: "x86_64", family: "mac"

2
क्या आप अपने PATH और JAVA_HOME चर पोस्ट कर सकते हैं?
जीन बॉयर्सकी

@JeanneBoyarsky ब्लूज़: helloworld निंजा $ इको $ JAVA_HOME ब्लूज़: helloworld निंजा $ इको $ PATH / usr / bin: / bin: / usr / sbin: / usr / लोकल / बिन: / usr / लोकल / गिट / बिन
निंजा

@JeanneBoyarsky यह आप चाहते हैं, सर?
निंजा

3
मैं महिला हूं (इसलिए मुझे "सर" कहना गलत है) और हां। कृपया अपना JAVA_HOME सेट करने का प्रयास करें। आपकी समस्या इस समस्या के समान प्रतीत होती है: stackoverflow.com/questions/13752519/…
Jeanne Boyarsky

2
@JeanneBoyarsky मेरी अशिष्टता को क्षमा करें। आपके द्वारा दी गई समस्या मुझे मिल रही है। बहुत बहुत धन्यवाद ~
निंजा

जवाबों:


227

निम्नलिखित को अपने में जोड़ें ~/.mavenrc:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/{jdk-version}/Contents/Home

दूसरा उपाय:

echo export "JAVA_HOME=\$(/usr/libexec/java_home)" >> ~/.bash_profile


हाँ, आप उत्तर सही है। JAVAHOME की आवश्यकता है। मैं इसके बजाय / etc / प्रोफाइल को संपादित करता हूं
निंजा

8
खैर, ~ / .mavenrc में जोड़ना यह सुनिश्चित करता है कि अन्य एप्लिकेशन प्रभावित नहीं हैं। केवल mD ने JDK के इस संस्करण को चुना। :)
गौरव वैश्य

43
निर्यात JAVA_HOME = $ (/ usr / libexec / java_home -v 1.7)
jla

1
.mavenrc समाधान मेरे लिए पूरी तरह से काम किया। यह भी एहसास हुआ कि मैंने केवल JDK 1.8 स्थापित किया था और JRE 1.8। धन्यवाद गौरव!
टिमोथाइक्लिफर्ड

2
आप पर एक मैक jenv का उपयोग कर रहे हैं, तो यह हो सकता है: export JAVA_HOME="$HOME/.jenv/versions/`jenv version-name`"के लिए ~/.mavenrcफ़ाइल।
एड़ी

46

में मिलता है

/System/Library/Frameworks/JavaVM.framework/Versions

और CurrentJDKइंगित करने के लिए प्रतीकात्मक लिंक को अपडेट करें

/Library/Java/JavaVirtualMachines/YOUR_JDK_VERSION/Contents/

उदाहरण के लिए

cd /System/Library/Frameworks/JavaVM.framework/Versions
sudo rm CurrentJDK
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/ CurrentJDK

अब यह तुरंत काम करेगा।


1
करंटजेडके सिम्कलिन ट्रिक मावेन 3.3.1 के साथ काम नहीं करता है, लेकिन ~ / .mavenrc को संशोधित करता है।
स्टीफन एल

41

आप भी कर सकते हैं,

<properties>
      ...  

      <!-- maven-compiler-plugin , aka JAVA Compiler 1.7 -->
      <maven.compiler.target>1.7</maven.compiler.target>
      <maven.compiler.source>1.7</maven.compiler.source>

      ...  
</properties>

5
यह काम नहीं करता है अगर मावेन जावा 6 का उपयोग करके चल रहा है। यह बस के साथ दुर्घटनाग्रस्त हो जाता है[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project {projectname}: Fatal error compiling: invalid target release: 1.7 -> [Help 1]
गेविन एस। यानसी

27

आप स्पष्ट रूप से मावेन को भी बता सकते हैं कि किस जावा संस्करण को संकलित करना है। आप maven-compiler-pluginअपने पोम को जोड़ने की कोशिश कर सकते हैं ।

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
    </plugins>
    [...]
  </build>
  [...]
</project>

यदि आपने एक मावेन प्रोजेक्ट को एक आईडीई में आयात किया है, तो संभवतः आपके कंपेन में डिफॉल्ट कंपाइलर के लिए एक मावेन सेटिंग है जो आपके मावेन रनर का उपयोग कर रहा है।


ओ you धन्यवाद लेकिन मैंने शुरुआत नहीं की है। मैं सिर्फ 'mvan -v' ... कारण है कि मैं JAVA_HOME असाइन नहीं करता
निंजा

ध्यान दें कि केवल आपके कोड को प्रभावित करता है जो संकलित है। मैं इस समस्या में भाग गया और यहां आया क्योंकि एक बाहरी पुस्तकालय जो मैं उपयोग कर रहा था वह जावा 7 के लिए संकलित किया गया था और मावेन इसे जावा 6 के साथ चलाने की कोशिश कर रहा था

यह काम नहीं करता है अगर मावेन जावा 6 का उपयोग करके चल रहा है। यह बस के साथ दुर्घटनाग्रस्त हो जाता है[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project {projectname}: Fatal error compiling: invalid target release: 1.7 -> [Help 1]
गेविन एस। यानसी

डिफ़ॉल्ट कंपाइलर के लिए आपके IDE में केस मावेन सेटिंग 1.7 से कम है, लेकिन इंस्टॉल किया गया jdk 1.7 से अधिक है
John Doe

9

इसने मेरी मदद की। बस इसे अपने pom.xml में जोड़ें।

डिफ़ॉल्ट मावेन कंपाइलर प्लगइन जावा 1.5 या 1.6 का उपयोग करता है, आपको इसे अपने 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>

4

ग्रहण उपयोगकर्ताओं के लिए। यदि आपके पास एक रन कॉन्फ़िगरेशन है जो उदाहरण के लिए स्वच्छ पैकेज करता है।

रन कॉन्फ़िगरेशन पैनल में एक JRE टैब होता है, जहां आप निर्दिष्ट कर सकते हैं कि किस रनटाइम को चलाना चाहिए। ध्यान दें कि यह कॉन्फ़िगरेशन pom.xml में जो कुछ भी है उसे ओवरराइड करता है।


2

मुझे इस सवाल पर देर हो गई है, लेकिन मुझे लगता है कि MacOS पर JDK संस्करणों को संभालने का सबसे अच्छा तरीका है: पर वर्णित स्क्रिप्ट का उपयोग करके: http://www.jayway.com/2014/01/15/how-to-switch-jdk -संस्करण-ऑन-मैक-os-x-आवारा /


2

कृपया संगतता जांचें। मैं के साथ संघर्ष किया mvn 3.2.1और jdk 1.6.0_37कई घंटों के लिए। सभी चर निर्धारित किए गए थे लेकिन काम नहीं कर रहा था। अंत में मैं उन्नत बनाया jdk to 1.8.0_60और mvn 3.3.3और कहा कि काम किया। पर्यावरण चर निम्नलिखित के रूप में:

JAVA_HOME=C:\ProgramFiles\Java\jdk1.8.0_60 
MVN_HOME=C:\ProgramFiles\apache-maven\apache-maven-3.3.3 
M2=%MVN_HOME%\bin extend system level Path- ;%M2%;%JAVA_HOME%\bin;

1

@MasterGaurav का समाधान पूरी तरह से काम कर रहा है,

मैं आम तौर पर जावा स्विच चीज़ को एक zsh फंक्शन में रखता हूँ:

alias java_ls='/usr/libexec/java_home -V 2>&1 | grep -E "\d.\d.\d[,_]" | cut -d , -f 1 | colrm 1 4 | grep -v Home'

function java_use() {
    export JAVA_HOME=$(/usr/libexec/java_home -v $1)
    echo export "JAVA_HOME=$(/usr/libexec/java_home -v $1)" > ~/.mavenrc
    export PATH=$JAVA_HOME/bin:$PATH
    java -version
}

फिर आप java_lsअपनी मशीन पर उपलब्ध जेवीएम के सभी दो प्राप्त कर सकते हैं , java_use 1.7जावा और मावेन दोनों के लिए 1.7 संस्करण का उपयोग करने के लिए चला सकते हैं।

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