Birden çok java sürümü arasında geçiş yapın


65

Android Studio’yu Ubuntu 14.04’e kurarken Java sürümümün ( javac 1.7.0_79) sorunlara neden olduğu mesajını alıyorum . Java'nın daha yeni bir Oracle sürümünü nasıl kuracağınıza dair bir çözüm buldum :

sudo apt-add-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

Ancak bunun open-jdkJava'nın mevcut sürümünün üzerine yazmasından korkuyorum . Hangi programlarımın Java'ya bağlı olduğunu bilmediğimden, bunun diğer programları çökertebileceğinden korkuyorum.

apt-getÖnceki Java'mın üzerine yazmadığından emin olmanın bir yolu var mı ? Temelde ikisini de kurmayı ve hangi sürüme ihtiyacım olduğuna bağlı olarak manuel olarak geçiş yapmayı çok isterdim.

Yanıtlar:


83

Apt-get varolan java sürümlerinin üzerine yazmaz.

Yüklü java sürümleri arasında geçiş yapmak için update-java-alternativeskomutu kullanın.

Tüm java sürümlerini listele:

update-java-alternatives --list

Java sürümünü varsayılan olarak ayarlayın (kök izinleri gerekir):

sudo update-java-alternatives --set /path/to/java/version

... /path/to/java/versionönceki komut tarafından listelenenlerden biri (örn. /usr/lib/jvm/java-7-openjdk-amd64).


Ek bilgi:

update-java-alternativesDebian'ın kullanan bir kolaylık aracı alternatifleri sistemini ( update-alternativesBelirtilen java sürümüne bağlantıları bir demet ayarlamak için) (örn java, javac, ...).


1
Benim için bu java -version'un java8 olmasına neden oldu, ama JAVA_HOME hala 7'ye ayarlandı :(
Nenotlep

Bu da benim sorunumu çözdü. Ne yaptığımı @Nenotlep .bashrc içinde elle veya / etc / çevreyi ortam değişkeni düzenlemektir
nuttynibbles

update-java-alternativesbenim için uygun değildi. Ben sadece bu komutu değiştirdim update-alternatives java.
nofinator

@nofinator yalnızca javayürütülebilir dosyayı etkiler . Hangi Ubuntu sürümünü kullanıyorsunuz?
Danzel

1
@Nenotlep değiştirmek JAVA_HOMEiçin aşağıdaki komutu çalıştırmanız gerekir: source /etc/environment
janb 16:18

48

kullanım

sudo update-alternatives --config java

Geçerli yüklü olan tüm yüklü sürümleri listeler ve işaretlenir ve geçiş yapmak için iletişim sağlar

There are 3 choices for the alternative java (providing /usr/bin/java).

Selection    Path...
------------------------------------------------------------
  0            /usr/lib/jvm/java-9-oracle/bin/java...
* 1            /usr/lib/jvm/java-7-oracle/jre/bin/java...
  2            /usr/lib/jvm/java-8-oracle/jre/bin/java...
  3            /usr/lib/jvm/java-9-oracle/bin/java...

Press <enter> to keep...[*], or type selection number: 

kullanım

export JAVA_HOME="$(jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));')"

$JAVA_HOMEGeçerli aktif sürümden ayarlamak için


@Danzel tarafından kabul edilen cevapta belirtildiği gibi, bu java, yapılandırmanın diğer kısımlarını değil yalnızca yürütülebilir dosyayı etkiler . update-java-alternativesVarsa kullanın .
Premek Brada

4

@Muet'in verdiği cevaba dayanarak bunu sorunsuz bir şekilde çalışırken buldum:

Şunu ekle ~/.bashrc:

export JAVA_HOME="$(jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));')"

Takma adlara ekle:

alias useJava8='yes | sudo apt-get install oracle-java8-set-default && source ~/.bashrc'
alias useJava7='yes | sudo apt-get install oracle-java7-set-default && source ~/.bashrc'

Sonra sadece kullanarak aynı kabuğu içinde geçiş yapabilirsiniz: useJava7veyauseJava8


takma adları kalıcı hale getirmek için, bunları ~ / .bashrc içine koyabilirsiniz, daha fazla bilgi burada askubuntu.com/questions/17536/…
Konstantin Zyubin

E: oracle-java7-set-default paketi bulunamıyor
Prakash Pandey

Farklı java sürümleri arasında kurulum, kullanım ve geçiş yapmanın en kolay yolu SDKMAN! Buraya bakın: sdkman.io/usage.html
brianjohnsen

Son zamanlarda JAVA_HOME ayarlamak, henüz denemek için başka bir komutla gelip .bashrc:export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))
ThiamTeck

3

Java'yı yapılandırma

Komut satırında hangi sürümün varsayılan olduğunu update-alternatives, hangi komutların farklı komutlar için kullanılacağını yöneten kullanarak yapılandırabilirsiniz .

sudo update-alternatives --config java

Çıktı, aşağıdaki gibi bir şeye benzeyecektir.

There are 5 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      auto mode
  1            /usr/lib/jvm/java-6-oracle/jre/bin/java          1         manual mode
  2            /usr/lib/jvm/java-7-oracle/jre/bin/java          2         manual mode
  3            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode
  4            /usr/lib/jvm/java-8-oracle/jre/bin/java          3         manual mode
  5            /usr/lib/jvm/java-9-oracle/bin/java              4         manual mode

Press <enter> to keep the current choice[*], or type selection number:

Şimdi varsayılan olarak kullanılacak numarayı seçebilirsiniz. Bu, derleyici ( javac), dokümantasyon üreteci ( javadoc), JAR imzalama aracı ( jarsigner) ve diğerleri gibi diğer Java komutları için de yapılabilir . Özelleştirmek istediğiniz komutu doldurarak aşağıdaki komutu kullanabilirsiniz .

sudo update-alternatives --config command

JAVA_HOMEOrtam Değişkenini Ayarlama

Java sunucuları gibi birçok program, Java kurulum konumunu belirlemek için JAVA_HOME ortam değişkenini kullanır.

Yolu tercih ettiğiniz kurulumdan kopyalayın ve Sublime Text veya favori metin editörünüzü kullanarak / etc / ortamını açın.

sudo subl /etc/environment

Bu dosyanın sonuna, vurgulanan yolu kendi kopyaladığınız yolla değiştirdiğinizden emin olarak aşağıdaki satırı ekleyin.

JAVA_HOME="/usr/lib/jvm/java-8-oracle"

Kaydedin ve dosyayı çıkın ve tekrar yükleyin: source /etc/environment.
Artık ortam değişkeni aşağıdaki komutu yürüterek ayarlanmış olup olmadığını test edebilirsiniz: echo $JAVA_HOME. Bu, henüz ayarladığınız yolu döndürür.

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.