Mac'imde neden 3 farklı Java sürümü var?


1

Bugün Java Versiyonuma bakıyordum ve kafam çok karıştı. Üç farklı buldum:

  • Eğer Webstorm'a bakarsam kullanır: 1.6.0_65
  • Java sürümünü değiştirirsem şunu alıyorum: 1.7.0_45
  • Sistem ayarlarına bakarsam alıyorum: 1.8.0_45

Sistem ayarlarım aracılığıyla güncelleyeceğim sürüm olacak sadece sistem genelinde ONE Java sürümüne sahip olmak için ne yapabilirim: 1.8.0_45?


Neden sadece bir wan't do - bazı uygulamalar sadece Java 6 veya Java 7 kullanabilirsiniz - Her biri te- bakınız yüklemek nasıl oldu apple.stackexchange.com/a/112533/237 bazı sorunlarla ilgili
Mark

Yanıtlar:


1

Bazı açılardan bu yanlış bir anlama geliyor, ancak umarım yakında daha iyi anlaşılır:

Paketlenmiş Apple JRE / JDK her zaman yüklenir /System/Library/Frameworks/JavaVM.framework/Versions/Current; burada "Current", gerçek sürüme işaret eden bir bağlantıdır. Bu nedenle, birden fazla sürümü yükleyebilir ve Xcode veya başka bir IDE'de birden fazla sürüm kullanabilirsiniz.

Oracle ve yükleyicileri /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home, web tarayıcısı eklentisi için JDK / JRE'lerini ve içine JRE / JDK'nın tamamını yüklerler /Library/Java/JavaVirtualMachines/.

Ek olarak, yazılım paketleri kendi JDK / JRE paketleriyle birlikte gelebilir. Örneğin, HP Peregrine Servis Merkezi bunu yapar.

Dolayısıyla, her uygulama kendi JDK / JRE'siyle birlikte geldiğinde, hangisini kullanacağınızı bazı yapılandırmalarda anlatmanız gerekir. Genel olarak, tüm kabuk tahrikli uygulamalar için genellikle bunun için ayarladığınız bir ortam değişkeni vardır ve buna JAVA_HOME denir. Tomcat gibi yazılımlar buna saygı duyuyor.

Şuna daha yakından bir göz atın:

endor-2:~ garex$ /usr/libexec/java_home -V
Matching Java Virtual Machines (2):
    1.8.0_45, x86_64:   "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home
    1.7.0_71, x86_64:   "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home

Aşağıdaki java_home komutuyla kalıcı olarak Java 1.8 64 bit'e geçersiniz:

endor-2:~ garex$ java -fullversion
java full version "1.7.0_71-b14"
endor-2:~ garex$ /usr/libexec/java_home -v 1.8 -d64
/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home
endor-2:~ garex$ which java
/usr/bin/java
endor-2:~ garex$ java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

Ancak unutmayın: bunu yapabilirsiniz, ancak bazı yazılımların bunu takip etmesini beklemeyin. Benim durumumda JRE ve JDK'yı kurdum .

Arama betiğinizde java_home komutunu kullanarak, uygulamanız için her zaman doğru sürümü yapılandırabilirsiniz, örn.

endor-2:~ garex$ /usr/libexec/java_home -v 1.8 -d64 -exec java -fullversion
java full version "1.8.0_45-b14"
endor-2:~ garex$ /usr/libexec/java_home -v 1.7.0 -d64 -exec java -fullversion
java full version "1.7.0_71-b14"

1.7.x'i kalıcı olarak kaldırmak için https://docs.oracle.com/javase/8/docs/technotes/guides/install/mac_jdk.html adresini okuyun.


aynı kodları ile, ancak varsayılan jdk'in verimini değiştiremem MacBook-Pro: ~ chen $ java -fullversion java tam sürümü "9 + 181" MacBook-Pro: ~ chen $ / usr / libexec / java_home -v 1.8 -d64 /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home MacBook-Pro: ~ chen $ / java / usr / bin / java MacBook-Pro: ~ chen $ java / usr / bin / java ) SE Çalışma Zamanı Ortamı (yapı 9 + 181) Java HotSpot (TM) 64-Bit Sunucu VM (yapı 9 + 181, karma mod) MacBook-Pro: ~ chen $
ncowboy

1

Farklı uygulamalar, farklı Java kitaplıklarına bağlanır. Daha eski uygulamalar büyük olasılıkla Java 6'yı (1.6.0_65) gerektirirken, yeni uygulamalar sırasıyla daha yeni Java sürümlerine bağlanır.

Örnek olarak, eski Huawei 3G modemim için Mobile Connect uygulamasının Java 6'nın yüklenmesini gerektirdiğini biliyorum, Adobe Photoshop CS6'nın Java 7 (IIRC) gerektirdiğini ve tarayıcılarınızın büyük olasılıkla en yeni Java'yı çalıştırmanızı isteyeceğini Java 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.