OS X'te Java 7 ile 8 arasında geçiş yapma


25

Java-8'i yükledim. Şimdi varsayılan olarak Java-7'ye geri dönmek istedim, bu yüzden şunu yazdım ...

/usr/libexec/java_home -v 1.7.0_40 --exec java -version
/usr/libexec/java_home -v 1.7.0_40 --exec javac -version

Ama hala görüyorum ki ...

java -version
java version "1.8.0-ea"
Java(TM) SE Runtime Environment (build 1.8.0-ea-b108)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b50, mixed mode)

Bu işe yarıyor ...

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home

Ancak daha kalıcı bir çözüm istiyorum.

Neyi yanlış yaptığımı gören var mı?

Yanıtlar:


50

Sürümleri Kolayca Değiştirin

  1. Herhangi bir sırayla 1.6, 1.7, 1.8 sürümlerini yükleyin. Not: Sonuncusunun, hangisinin tarayıcı eklentileri için kullanılacağına karar verdiğine inanıyorum, aşağıdakileri değiştirmeyi umursamıyorum.

  2. Ardından, eklemek ~/.bashrcveya ~/.bash_profile, ya da nereye kadar:

    #!/bin/bash
    export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)
    
    setjdk() {
       export JAVA_HOME=$(/usr/libexec/java_home -v $1)
    }
    
  3. Yoluyla değişikliği doğrula java -version

    $ java -version
    java version "1.7.0_51"
    Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
    Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
    
    $ setjdk 1.6
    $ java -version
    java version "1.6.0_65"
    Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
    Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)
    
    $ setjdk 1.8
    $ java -version
    java version "1.8.0"
    Java(TM) SE Runtime Environment (build 1.8.0-b132)
    Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
    

Açıkçası değişiklik sadece kabuğun süresi içindir. Ama şimdi onu global olarak nerede ayarlayabileceğinizi görebilirsiniz.


2
Bir sorun: JDK7, zaten JDK8'iniz varsa yüklemeyi reddediyor. Size 404 veren daha fazla bilgi için oracle.com adresinden bir URL'ye yönlendirir. Ve elbette, JDK8 için kaldırma talimatları hiç çalışmaz, bu yüzden temelde kayboldum.
Eric W.

1
Sadece jenv kullanmak jenv.be
madzohan

9

“JDK'nın farklı sürümleri arasında geçiş yapmak üzere JAVA_HOME ortam değişkenini nasıl ayarlayacağınızı unutmanıza yardımcı olacak bir komut satırı aracı” olan jEnv ( http://www.jenv.be/ ) kullanabilirsiniz ( projenin ana sayfasından alınmış) ).

Ruby'ye aşina iseniz, JEnv RVM veya rbenv kullanmak gibidir. Makinenizde kurulu birkaç farklı JDK'yi, bir JDK'den diğerine geçmek için kendi komut dosyanızı yazmanıza gerek kalmadan kullanmanıza yardımcı olur. Geçerli java sürümünü, örneğin geçerli dizine göre veya bir yapılandırma dosyasına göre değiştirebilirsiniz.


biraz daha açıklayabilir misin? Bu bir yorum gibi görünüyor, cevap değil.
Austin T Fransızca,

Ruby'ye aşina iseniz, örneğin geçerli dizinde veya bir yapılandırma dosyasına bağlı olarak mevcut java sürümünü değiştirmek için RVM veya rbenv kullanmak gibi. JENV ana sayfasına giderseniz iyi bir ders var.
Pietro Di Bello

Bu gönderi, cevap arayan herkes için olmalı, bu nedenle gönderide daha fazla detayın tam ve iyi bir cevap olarak görülmesi bekleniyor.
Austin T Fransızca,

Daha fazla bilgi ekledim ve biraz cevap verdim ... umarım bu şimdi daha iyi görünür. Geri dönüşünüz için teşekkür ederiz.
Pietro Di Bello

4

Java sürümleri arasında geçiş yapamazsınız. Gelen Belgeler Gördüğünüz:

Bir seferde yalnızca bir JRE kurulabilir. Sistem, geçerli sürümden daha düşük bir sürüme sahip bir JRE yüklemeyecektir. JRE'nin daha düşük bir sürümünü yüklemek istiyorsanız, önce geçerli sürümü kaldırın.

Eski bir sürüme geri dönmek istiyorsanız, Java 8'i kaldırmanız gerekir .


grrr teşekkürler, ancak bu OSX hakkındaki düşünceme yardımcı olmuyor.
Jackie,

4
@Jackie: Aslında bunun OS X ile bir ilgisi yok, Oracle ile daha fazlası var. Apple, OS X için JDK'yı koruduğunda, aktif Java sürümleri arasında geçiş yapmak mükemmel ve kolaydı. Lütfen Oracle'ı berbat kurucuları için suçlayın ve OS X'i değil.
Alessandro Vermeulen 12:13

@AlessandroVermeulen tüm saygımla bu "yükleyici" heck değil keşke benim linux kutuları gibi önceden yüklenmiş bir sürüm ile gelmedi diliyorum. O zaman unix binary ile istediğim şekilde “kurdum”. Ve sonra OSX'in eski sürümleri vardı, hatta önyüklemesi bile gerekiyordu. IMHO kesinlikle OSX'te soruna neden olan kurallardır.
Jackie

4
Makineme doğru bir şekilde takılmış birden fazla JDK var. Oracles'ın 1.8'den 1.7'ye kadar geçiş yapmasına izin vermeyen, komut satırından tam yolunu çalıştıran tercihli eklentisi. / usr / libexec / java_home -V hepsini listeler - ve Java 7 tercih bölmesi Java 7
JRE'lerin

0

@ Nkadwa'nın cevabını desteklemek istiyorum. Önerisi işe yarıyordu, ancak yalnızca CurrentSDK'nin sembol bağlantısını değiştirdikten sonra. Yani burada değiştirilmiş kod:

setjdk() {
    export JAVA_HOME=$(/usr/libexec/java_home -v $1)
    sudo ln -nsf ${JAVA_HOME%/*} /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
}
setjdk 1.8
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.