OpenJDK / OpenJRE nasıl doğru şekilde kaldırılır ve SunJDK / SunJRE nasıl varsayılan olarak ayarlanır


49

Ubuntu, Open JDD / JRE'yi Sun JDK / JRE'ye göre daha çok tercih ediyor gibi görünüyor. Sun JRE, JDK ve eklentisini kurduktan ve OpenJDK ile ilgili paketleri almak için biraz zaman harcadıktan sonra bile apt-get, bunları bir bağımlılık olarak bazı paketlerle geri kurdu. Bu davranış Sun Java paketleri lehine düzeltilebilir mi? Sadece bir tane Java yığınının kurulmasını istiyorum (evet, biraz OCD , ancak sistemimin temiz olmasını istiyorum) ve Sun Java olmasını istiyorum.

Güncelleme: Marcos Roriz'in belirttiği gibi, problem varsayılan-jre'de (hangi Java-bağımlı paketlerin bağımlı olduğunu kullanıyor) OpenJDK'yi gösteriyor gibi görünüyor, bu yüzden soru varsayılan-jre / default-jdk'nin nasıl işaretleneceği ile ilgili. Sun Java'ya.


Lütfen herhangi biri oracle jdk ile cevabı güncelleyin ..
LoveToCode

Yanıtlar:


35

Sun Java'yı Eski Ubuntu Sürümlerine Yükleme (9.10 ve altı)

Sanırım yaklaşık üç yıl önce Ubuntu 8.04 ile aynı problemi yaşadım. OpenJRE kullanırken garip bir sorun vardı ve Sun Java sürümü kullanarak sorun çözüldü. 10.04 güneş java'sının düşmesi ve openjre ile değiştirilmesinden bu yana, 10.04 altındaki sürümler için geçerli olan terminaldeki adımlar şunlardır:

sudo apt-get remove openjdk-6-jre default-jre default-jre-headless

sudo apt-get install sun-java6-jre sun-java6-bin sun-java6-plugin sun-java6-fonts

(Sun java ile ilgili her şey. Sadece emin olmak için)

Ondan sonra openjdk dosyasını kaldırırsanız, sadece güneş java'nız olur. Eğer çıkarmadıysanız, her ikisine de sahip olursunuz. Birinden diğerine geçmek için şunu yapın:

sudo update-java-alternatives -l - Bu, kullanabileceğiniz java motorlarının listesini gösterir.

Java alternatifinin adı soldaki isimdir, örneğin openjdk şöyle görünür:

java-6-openjdk 1061 /usr/lib/jvm/java-6-openjdk

Ve sistemi bu şekilde openjdk olarak ayarlayacaksınız:

sudo update-java-alternatives -s java-6-openjdk

Sun'ı kullanmak isteseydiniz bunu yapardınız (Sun paketlerinin kurulmasından sonra):

sudo update-java-alternatives -s java-6-sun

Java 7 sürümünü kullanmak istiyorsanız, 7 için yukarıda belirtilen 6 sayısını değiştirmeniz yeterlidir. Örneğin, OpenJRE 7 sürümünü kurmak istersem:

sudo apt-get install openjdk-7-jre default-jre default-jre-headless

Sun Java'yı Ubuntu'nun Yeni Sürümlerine Kurma (yukarıdaki 10.04)

Terminali açın ve aşağıdakini yazın:

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

Sun Java sürümünü sisteminize yüklemeniz gerekir. Bunu değiştirmek için, başka java alternatifleriniz olması durumunda aşağıdakileri yapmanız yeterlidir:

sudo update-java-alternatives -s java-7-oracle  

Yüklemenin otomatik olmasını istiyorsanız, aşağıdakini yazın:

sudo echo oracle-java7-installer shared/accepted-oracle-license-v1-1 select true | sudo /usr/bin/debconf-set-selections

bundan sonra sadece varsayılan ortam değişkenlerini ayarlamak için aşağıdakileri yapın:

sudo apt-get install oracle-java7-set-default

PPA'nın 6, 7 ve 8 versiyonlarını içerdiğine dikkat edin. Böylece kurulum satırındaki sayıyı değiştirerek bunlardan herhangi birini kurabilirsiniz, örneğin:

sudo apt-get install oracle-java8-installer

Java'yı kurardım 8. update-java-alternativesKullanmak istediğiniz Java sürümünü yükledikten ve sürümü komutla varsayılana ayarladıktan sonra , aşağıdakileri yazarak hangi sürümü kullandığınızı kontrol edebilirsiniz:

java -version

O anda kullandığınız varsayılan sürümü size gösterecektir.

Ayrıca OpenJRE / JDK'nın Sun Java'ya geçerek birçok sorunu çözdüğü 2 veya 3 yıl öncesinden uzun bir yol kat ettiğini de belirtmek isterim.


11

Bence sorun, bazı Java paketlerinin openjdk-jre'ye işaret eden default-jre'ye dayanmasıdır. OpenJDK'yi kalıcı olarak kaldırmak için kolay bir yol olduğunu sanmıyorum. Sorun şu ki, bir java paketi / programı kurduğunuzda muhtemelen tekrar openjdk'a çarpacaksınız.

Ancak her ikisine de sahip olmak istiyorsanız, java çalışma zamanı programlarını (java, javah, javap vb.) Güneş uygulamasına ayarlamak kolaydır. Yap:

sudo apt-get install sun-java6-jre sun-java6-plugin sun-java6-fonts

veya eğer bir java dev iseniz (sdk ve srcs kurulumlarını):

sudo apt-get install sun-java6-jdk sun-java6-jre sun-java6-source

Ve ile varsayılan programlar olarak ayarlayın:

sudo update-java-alternatives -s java-6-sun

1
Evet, bunun default-jre ile ilgili olduğuna inanıyorum. Hayır, gerçekten hem Sun hem de Açık JDK'lara sahip olmak istemiyorum - bu ne sorusudur - tek bir tanesine sahip olmak ve Sun JDK olmasına izin vermek. Sun-JRE'ye işaret etmek için default-jre'yi kırmanın bir yolu var mı?
Ivan

Evet, default-jrebu akşam güneş-java'yı işaret etmek için paketi yeniden kurmaya çalışacağım . Şu an işim var.
Marcos Roriz Junior

6

.jdk1.6.0_23.jinfoDosya verilen programlar ve onların yolları bir listesi olmalıdır. Boş bir satırın ardından açıklayıcı bir başlık var. Sonra üç alan biçimindeki programların listesi: entry type (jre / jkd / plugin); program adı; ve yol. İçeriğin neye benzediğini görmek için kullanabileceğiniz bazı jinfo dosyalarına sahip olmalısınız. Bu, alternatif mekanizmalar tarafından hangi bağlantıların oluşturulacağını belirlemek için kullanılır. Sun paketimin başı.

isim = java-6-sun-1.6.0.22
takma = java-6-sun
Öncelikli = 63
bölüm, serbest olmayan

jre ControlPanel / usr / lib / jvm / java-6-sun / jre / bin / ControlPanel
jre java / usr / lib / jvm / java-6-sun / jre / bin / java
jre java_vm / usr / lib / jvm / java-6-sun / jre / bin / java_vm

Alternatif mekanizmaları kullanmadan varsayılan Java komutlarını geçersiz kılmak istiyorsanız, Java yolunu yolunuzda / usr / bin'den önce yerleştirin.

El ile yükleme yaparken Java'yı yüklerim /opt. senin kurulum için ben içinde yüklü olurdu /opt/jdk1.6.0_23. Sonra yolu değişkenimin $JAVA_HOME/binbaşlangıcına koydum PATH.

EDIT: Bu bütün Sun dosyası. Not .java-6-sun.jinfo, sembolik bir bağlantıdır .java-6-sun-1.6.0.22.jinfo.

isim = java-6-sun-1.6.0.22
takma = java-6-sun
Öncelikli = 63
bölüm, serbest olmayan

jre ControlPanel / usr / lib / jvm / java-6-sun / jre / bin / ControlPanel
jre java / usr / lib / jvm / java-6-sun / jre / bin / java
jre java_vm / usr / lib / jvm / java-6-sun / jre / bin / java_vm
java javaws / usr / lib / jvm / java-6-sun / jre / bin / javaws
jre jcontrol / usr / lib / jvm / java-6-sun / jre / bin / jcontrol
jre keytool / usr / lib / jvm / java-6-sun / jre / bin / keytool
jre pack200 / usr / lib / jvm / java-6-sun / jre / bin / pack200
jre policytool / usr / lib / jvm / java-6-sun / jre / bin / policytool
jre rmid / usr / lib / jvm / java-6-sun / jre / bin / rmid
jre rmiregistry / usr / lib / jvm / java-6-sun / jre / bin / rmiregistry
jre paketi açma / usr / lib / jvm / java-6-sun / jre / bin / açma / açma
jre orbd / usr / lib / jvm / java-6-sun / jre / bin / orbd
jre servertool / usr / lib / jvm / java-6-sun / jre / bin / servertool
jre tnameserv / usr / lib / jvm / java-6-sun / jre / bin / tnameserv
jre jexec / usr / lib / jvm / java-6-sun / jre / lib / jexec
jdk HtmlConverter / usr / lib / jvm / java-6-sun / bin / HtmlConverter
jdk appletviewer / usr / lib / jvm / java-6-sun / bin / appletviewer
jdk apt / usr / lib / jvm / java-6-sun / bin / apt
JDK genişletme / usr / lib / jvm / java-6-güneş / bin / genişletme
jdk idlj / usr / lib / jvm / java-6-sun / bin / idlj
jdk kavanoz / usr / lib / jvm / java-6-sun / bin / kavanoz
jdk jarsigner / usr / lib / jvm / java-6-sun / bin / jarsigner
jdk javac / usr / lib / jvm / java-6-sun / bin / javac
jdk javadoc / usr / lib / jvm / java-6-sun / bin / javadoc
jdk javah / usr / lib / jvm / java-6-sun / bin / javah
jdk javap / usr / lib / jvm / java-6-sun / bin / javap
jdk jconsole / usr / lib / jvm / java-6-sun / bin / jconsole
jdk jdb / usr / lib / jvm / java-6-sun / bin / jdb
jdk jhat / usr / lib / jvm / java-6-sun / bin / jhat
jdk jinfo / usr / lib / jvm / java-6-sun / bin / jinfo
jdk jmap / usr / lib / jvm / java-6-sun / bin / jmap
jdk jps / usr / lib / jvm / java-6-sun / bin / jps
jdk jrunscript / usr / lib / jvm / java-6-sun / bin / jrunscript
jdk jsadebugd / usr / lib / jvm / java-6-sun / bin / jsadebugd
jdk jstack / usr / lib / jvm / java-6-sun / bin / jstack
jdk jstat / usr / lib / jvm / java-6-sun / bin / jstat
jdk jstatd / usr / lib / jvm / java-6-sun / bin / jstatd
jdk native2ascii / usr / lib / jvm / java-6-sun / bin / native2ascii
jdk rmic / usr / lib / jvm / java-6-sun / bin / rmic
Jdk schemagen / usr / lib / jvm / java-6-sun / bin / schemagen
jdk seriverici / usr / lib / jvm / java-6-güneş / bin / seriver
jdk wsgen / usr / lib / jvm / java-6-sun / bin / wsgen
jdk wsimport / usr / lib / jvm / java-6-sun / bin / wsimport
jdk xjc / usr / lib / jvm / java-6-sun / bin / xjc
eklentisi xulrunner-1.9-javaplugin.so /usr/lib/jvm/java-6-sun/jre/lib/amd64/libnpjp2.so
eklentisi mozilla-javaplugin.so /usr/lib/jvm/java-6-sun/jre/lib/amd64/libnpjp2.so

Yüklü bir java'm yok, bu yüzden onunla ilgili hiçbir şeyim yok, yüklü olan hiçbir şey yok, hiçbir .jinfo dosyası yok. Bu şekilde tutacağım. Bu yüzden Sun'ın JDK'sı için .jinfo dosyasının tam içeriğini görmek istiyorum.
jurchiks

Tam güneş .jinfo dosyasını ekledim.
BillThor

6

Openjdk ve icedtea öğelerini silin:

apt-get purge openjdk-\* icedtea-\* icedtea6-\*

aşağıdakini /etc/apt/sources.list listesine ekleyin

deb http://ppa.launchpad.net/webupd8team/java/ubuntu YOUR_UBUNTU_VERSION_HERE main

Sun / Oracle JRE veya JDK'yı kurun:

apt-get install oracle-jdk7-installer
apt-get install oracle-java7-installer 

2
Ve bundan sonra hiç Java'sız kaldı ... Soru aslında OpenJDK'yi sisteminizden nasıl çıkaracağınıza değil, birini diğerine değiştireceğinize işaret ediyor. Cevabınıza biraz daha fazla bilgi ekleyin, soru sadece bu adımları izleyerek cevaplanamaz.
Bruno Pereira,

4

Bu satırı / etc / environment dosyasına ekledim: JAVA_HOME = "/ usr / lib / jvm / jdk1.6.0_23" ve PATH değişkenine JAVA_HOME / bin ekledim, ancak OS hala java komutunu tanımıyor, diyor. yüklü değil ve bana gcj ve openjdk sunuyor.

Kontrol ettin mi?

echo $JAVA_HOME 
echo $PATH

Gerekmiyorsa: openjdk ve gcj'yi sinaptik veya apt-get ile kaldırın.

apt-get remove gcj 
apt-get remove openjdk

O zaman java'yı alternatiflerden mahrum bırakırdım ve çoğunlukla BillThor'un önerdiği gibi yapardım, neden ona bir nezaket verdim.

which javac
which java

Java'yı kurduğunuz yere ve PATH'de bulunduğu yere işaret etmelidir.


Yüklenmiş gcj veya openjdk yok ... Sadece whichkomutları denedim ve hiçbir şey basmıyor . PATH içindeki JAVA_HOME değişkeninden önce $ sembolünü unuttuğumu öğrendim, şimdi yeniden başlatacağım ve nasıl çalıştığını göreceğim.
jurchiks

PC yeniden başlatıldı, ancak whichkomut hala hiçbir şey göstermiyor. Hem JAVA_HOME hem de PATH değişkenleri doğrudur: echo $ JAVA_HOME / usr/lib/jvm/jdk1.6.0_23 echo $ PATH $ JAVA_HOME / bin: / usr / yerel / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / games Sorun nerede olabilir? Düzenleme: GOD BARAJI IT, neden yorumlarda hiçbir satır sonu yoktur?
Şubat'ta jurchiks

a) Bilgisayarı yeniden başlatmak gerekli olmamalıdır. Yeniden açın, kabuğun yeterli olması veya çoğunlukla kullanıcı olarak yeniden tanımlanması gerekir. b) Yorumlarda biçimlendirme için yardımın içine bakın. Görüyorum echo $PATH $JAVA_HOME/bin:/usr/local/sbin...ama sonuçta $ JAVA_HOME değerlendirilmeli - yanlış bir şey var ya da raporun yanlış. c) Çizgi çizgiler: Orada değiller, bu yüzden sürekli ENTER'a çok erken basıyoruz, ve sonra saat geçiyor, çünkü düzenleme sadece birkaç dakika izin veriyor - sürekli olarak bu tuzağa giriyorum. Nefret ettim! :)
kullanıcı bilinmeyen

Eh, JAVA_HOME değişkeni aynı dosyada (/ etc / environment), sadece ilk satırda. Belki başka bir yerde olmalı? Ben echo $JAVA_HOMEolsa yazarken tanır ...
jurchiks

Sorum oldu: Does echo $PATHbaskı $JAVA_HOME...veya JAVA_HOME, yani değerini yazdırmak vermez: /usr/lib/jvm/jdk1.6.0_23?
kullanıcı bilinmeyen

3
  1. Sistem-> Yönetim-> Synaptic Paket Yöneticisi'ni açın ve ardından OpenJDK'yi tamamen kaldırın.
  2. Java yazarak java -versionKabuk sürümünde deneme sürümü ( yalnızca Sun java görüntüleyecektir)
  3. tip sudo update-java-alternatives -l
  4. bitirdiniz. Şimdi yalnızca güneş java yüklü ve varsayılan jdk olarak ayarlandı

ve yalnızca iki jdk yüklü olduğunda ve sun-java'yı varsayılan ortam olarak ayarlamak istiyorsanız çalışır


2

Ubuntu 10.10'u kullanarak, önce Synaptic'te libaccess-bridge-java'nın kaldırılması için işaretlemeniz ve ardından openjdk-6-jre-headless işaretlemeniz gerekir.

Kaldırılacak bir liste ile bitti:

ca-sertifikaları-java, buzlu-6-jre-kakao, libaccess-köprü-java, libaccess-köprü-java-jni, openjdk-6-jre, openjdk-6-jre-başsız, openjdk-6-jre-lib.

Bu işe yaradı, ancak /etc/java-6-openjdkiçinde yeni bir dizinde izole ettiğim, içinde çeşitli dosyalar ve alt dizinlerin bulunduğu bir dizin bıraktı. Olağandışı bir etkisi olmadığından, muhtemelen sadece artık bir kalıntı olduğu düşünülüyor.

Bu beni doğrudan Java web sitesinden indirdiğim Java ile bıraktı. Ancak, varsayılan olarak ayarlamasına ve Firefox eklentileri dizinine bağlantı oluşturmasına rağmen, artık işe yaramadı. Sun-java6-jre ve ilişkili paketlerini kurmak, gsfonts-x11, odbcinst, odbcinst1debian2, sun-java6-bin ve unixodbc'yi Synaptic aracılığıyla tekrar kurmak, Java eklentisinin tekrar çalışmaya başladığını gördü. Eklenti dizindeki bağlantıyı kaldırmak ve onu gerçek libnpjp2.so dosyasıyla değiştirmek işe yaramadı. Synaptic aracılığıyla yüklenen Java'daki ns7 veya ns7-gcc29 dizinlerindeki libjavaplugin_oji.so dosyalarına bir bağlantı kullanmak da işe yaramadı. Bu bana, Firefox’taki en yeni Java eklentisini edinmek için, bir Java web sitesindeki talimatları izleyebileceğini ve indirilen Java’yı çalıştırmak için mevcut olan herhangi bir çeşitliliği olan entegre Linux Java’nın gerekli olduğunu gösteriyor. Eklenti etkinleştirildikten sonra onu çevreleyen dosyalar üzerinde çalışması için güvenir. Java ve Linux'u içeren kodun tam olarak anlaşılması gizemlerini çözmek için gerekli olsa da, belki de bu deneyler bu durumda iki Java'ya ihtiyaç duyulmasının nedenlerini bulmada yardımcı olabilir. En azından birileri bunu faydalı bulursa, tüm Java'yı da kaldırmak mümkündür.


2

Yeni Ubuntu 10.10 makinelerinde yaptığım şey

  • java-6-sun ekle,
  • openJDK'yi kaldırın (aksi takdirde ilk olarak sun Java'yı ekleyin, tomcat gibi diğer şeyler silinir)

O zaman benim için sorun değil, artık açık JDK bağımlılıkları yok


java-6-sun ubuntu-default-pack değil mi?
Fabian Zeindl

2

Bu soruya verilen cevaplar benim için işe yaramadı. Yani, aşağıdakiler başarısız oldu:

sudo apt-get purge sun-java5-jre sun-java6-font sun-java6-jre

Hata ile:

Virtual packages like 'sun-java6-jre' can't be removed

Bunun yerine bu talimatları deneyin :

  1. Ubuntu Software Center’ı açın .
  2. IcedTea'yı arayın.
  3. Takılıysa, IcedTea Java Eklentisini ( icedtea-6-jre-cacao) kaldırın .
  4. OpenJDK Java 7 Runtime'ı seçin.
  5. Kur'a tıklayın.
  6. 41.6 MB paketinin indirilmesini ve kurulmasını bekleyin.

OpenJDK (IcedTea) yüklenmiştir, bu da (bu hatayı aldıysanız) Oracle'ın JDK'sını hatasız kurmaya devam etmenize izin vermelidir.

Ayrıca bakınız:


1

İlk olarak: openjdk ve icedtea eklentisini kaldırın.

sudo apt-get remove openjdk* icedtea*

İkincisi: .bin jdk dosyasını / opt veya / usr / java dizinine kopyalayın ve çıkarın.

sudo cp jdk_1.16.0.bin /usr/java

Üçüncüsü: java dosyasının linkini / usr / bin / dizinine yerleştirin.

ln -s /usr/java/jdk_1.6.0/bin/java /usr/bin/java
ln -s /usr/java/jdk_1.6.0/bin/javac /usr/bin/javac

alternatifleri kullanarak alternatifleri güncelle

Firefox eklentileri dizininde Java Eklentisine sembolik bir bağlantı oluşturun.

Firefox eklentileri dizinindeki Java Plugin libnpjp2.so dosyasına sembolik bir link oluşturun:

   cd  

<Firefox>/plugins


 ln -s  

<JRE>/lib/i386/libnpjp2.so .

Bu yardımcı olur umarım.


Cp'den sonra ve bağlamadan önce bir adımı kaçırmadınız mı? Ve: El ile bağlantı kurmayı öneriyorsunuz, ancak çoğu çalıştırılabilir olan java / bin'de 45 dosya var. 25 sembolik link yapmak ister misiniz? PATH'i değiştirmeyi tercih ederim.
kullanıcı bilinmeyen

Bildiğim kadarıyla adımlar doğru. sun (oracle's) java kurulum sayfasındaki öğreticiye başvurabilirsiniz. Yukarıdaki adımlar olsa benim için çalıştı !. Nasıl anladığını bilmeme izin ver.
Ubuntuser
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.