Maven neden JDK 1.6 kullanıyor ancak java sürümüm 1.7


159

Maven ve MacOS için yeniyim.

Terminalimde kurulum mavenim var ve sürüm ayarlarını alırken (kullanarak mvn -v) JDK 1.7 yüklü iken JDK 1.6 kullanıyor gibi görünüyor. Yanlış bir şey var mı?

Girdiğim komutlar şunlardır:

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 ve JAVA_HOME değişkenlerinizi gönderebilir misiniz?
Jeanne Boyarsky

@JeanneBoyarsky blues: helloworld Ninja $ echo $ JAVA_HOME blues: helloworld Ninja $ echo $ PATH / usr / bin: / bin: / usr / sbin: / sbin: / usr / yerel / bin: / usr / yerel / git / bin
Ninja

@ JeanneBoyarsky istediğin bu mu efendim?
Ninja

3
Ben kadınım (bu yüzden bana "efendim" olarak atıfta bulunmak yanlıştır) ve evet. Lütfen JAVA_HOME ayarınızı yapmayı deneyin. Sorununuz bu soruna benziyor: stackoverflow.com/questions/13752519/…
Jeanne Boyarsky

2
@JeanneBoyarsky Verdiğimi affet.Verdiğiniz url tanıştığım sorun.Çok teşekkürler ~
Ninja

Yanıtlar:


227

aşağıdakileri ekleyin ~/.mavenrc:

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

İkinci Çözüm:

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


evet, cevap doğru. JAVAHOME gerekli. Bunun yerine / etc / profilini düzenliyorum
Ninja

8
~ / .Mavenrc dosyasına eklemek, diğer uygulamaların etkilenmemesini sağlar. JDK'nın bu sürümünü yalnızca mvn alır. :)
Gaurav Vaish

43
dışa aktar JAVA_HOME = $ (/ usr / libexec / java_home -v 1.7)
jla

1
.mavenrc çözümü benim için mükemmel çalıştı. Ayrıca sadece JDK 1.8'in yüklü olduğunu ve JRE 1.8'in olmadığını fark ettim. Teşekkürler Gaurav!
timothyclifford

2
Eğer bir mac jenv kullanıyorsanız, bu olabilir: export JAVA_HOME="$HOME/.jenv/versions/`jenv version-name`"için ~/.mavenrcdosyanın.
Eddy

46

İçine girmek

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

ve CurrentJDKsembolik bağlantıyı

/Library/Java/JavaVirtualMachines/YOUR_JDK_VERSION/Contents/

Örneğin

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

Şimdi derhal çalışacaktır.


1
CurrentJDK symlink hile, maven 3.3.1 ile artık çalışmıyor gibi görünüyor, ancak ~ / .mavenrc'yi değiştirmek işe yarıyor.
Stefan L

41

Ayrıca,

<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
Javen java 6 kullanarak çalışıyorsa bu işe yaramaz. Sadece çöküyor[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]
Gavin S. Yancey

27

Ayrıca maven'e hangi java versiyonunun derleneceğini de açık bir şekilde söyleyebilirsiniz. maven-compiler-pluginPom'ınıza eklemeyi deneyebilirsiniz .

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

Bir maven projesini bir IDE'ye içe aktardıysanız, muhtemelen IDE'nizde maven koşucunuzun kullandığı varsayılan derleyici için bir maven ayarı vardır.


Ey teşekkür ederim. ama başlamamıştım. Ben sadece 'mvn -v' ... JAVA_HOME
Ninja

Yalnızca derlenen kodunuzu etkilediğini unutmayın. Bu soruna rastladım ve buraya geldim çünkü kullandığım harici bir kütüphane Java 7 için derlendi ve Maven bunu Java 6 ile çalıştırmaya çalışıyordu

Javen java 6 kullanarak çalışıyorsa bu işe yaramaz. Sadece çöküyor[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]
Gavin S. Yancey

Bu, varsayılan derleyici için IDE'nizdeki maven ayarının 1.7'den düşük olması durumunda çalışır, ancak yüklü jdk 1.7'den yüksekse
John Doe

9

Bana yardımcı oldu. Sadece pom.xml dosyasına ekleyin.

Varsayılan olarak maven derleyici eklentisi Java 1.5 veya 1.6 kullanır, pom.xml dosyasında yeniden tanımlamanız gerekir.

<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

Eclipse Kullanıcıları için. Örneğin, paketi temizleyen bir Çalıştırma Yapılandırmanız varsa.

Yapılandırmayı Çalıştır panelinde, hangi çalışma zamanında çalıştırılması gerektiğini belirtebileceğiniz bir JRE sekmesi bulunur. Bu yapılandırmanın pom.xml dosyasında bulunanları geçersiz kıldığını unutmayın.



2

Lütfen uyumluluğu kontrol edin. Ben ile mücadele mvn 3.2.1ve jdk 1.6.0_37saatlerce. Tüm değişkenler ayarlandı ancak çalışmadı. Sonunda yükseltme jdk to 1.8.0_60ve mvn 3.3.3ve bu çalıştı. Ortam Değişkenleri aşağıdaki gibidir:

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'ın çözümü mükemmel çalışıyor,

Normalde java anahtarını bir zsh fonksiyonuna koydum:

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
}

Ardından java_ls, makinenizdeki mevcut jvm'nin java_use 1.7ikisini birden çalıştırabilir , hem java hem de maven için 1.7 sürümünü kullanmak için çalıştırabilirsiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.