Cara menghapus dengan benar OpenJDK / OpenJRE dan mengatur SunJDK / SunJRE sebagai Default

49

Ubuntu tampaknya sangat menyukai OpenJDK / JRE dibandingkan Sun JDK / JRE. Bahkan setelah saya menginstal Sun JRE, JDK dan plugin dan menghabiskan waktu mencabut paket-paket terkait OpenJDK, apt-get telah menginstalnya kembali dengan beberapa paket sebagai ketergantungan. Bisakah perilaku ini diperbaiki demi paket Sun Java? Saya ingin memiliki satu dan hanya tumpukan Java yang diinstal (ya, ini sedikit OCD , tapi saya ingin sistem saya bersih) dan ingin itu Java Sun.

Pembaruan: seperti yang dicatat oleh Marcos Roriz, masalahnya tampaknya berada pada default-jre (yang bergantung pada paket-paket yang bergantung pada Java) menunjuk ke OpenJDK, jadi pertanyaannya adalah bagaimana cara meretas default-jre / default-jdk ke titik ke Sun Java.

Ivan
sumber
tolong ada yang memperbarui jawabannya dengan oracle jdk ..
LoveToCode

Jawaban:

35

Menginstal Sun Java di Ubuntu Versi Lama (9.10 dan di bawah)

Saya punya masalah yang sama sekali sekitar tiga tahun lalu dengan Ubuntu 8.04 saya pikir. Ada masalah aneh ketika menggunakan openjre dan masalahnya diselesaikan dengan menggunakan versi sun jre. Berikut adalah langkah-langkah di terminal yang berlaku untuk versi di bawah 10,04, sejak mulai dari 10,04 sun java telah dijatuhkan dan diganti oleh openjre:

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

(Semuanya terkait Java java. Hanya untuk memastikan)

Setelah itu, jika Anda menghapus openjdk maka Anda hanya akan memiliki java java. Jika Anda tidak menghapusnya maka Anda memiliki keduanya. Untuk mengubah dari satu ke yang lain lakukan ini:

sudo update-java-alternatives -l - Ini akan menampilkan daftar mesin java yang dapat Anda gunakan.

Nama alternatif java adalah yang di sebelah kiri jadi misalnya openjdk akan muncul seperti ini:

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

Dan Anda akan mengatur sistem untuk openjdk seperti ini:

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

Jika Anda ingin menggunakan Sun maka Anda akan melakukan ini (Setelah menginstal paket-paket sun):

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

Jika Anda ingin menggunakan versi java 7, cukup ubah angka 6 yang disebutkan di atas untuk 7. Sebagai contoh jika saya ingin menginstal versi openjre 7 saya akan:

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

Menginstal Sun Java pada Ubuntu versi yang lebih baru (10,04 di atas)

Buka terminal dan ketik berikut ini:

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

Itu harus menginstal versi Sun Java pada sistem Anda. Untuk mengubahnya, cukup lakukan hal berikut jika Anda memiliki alternatif java lainnya:

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

Jika Anda ingin instalasi otomatis ketik yang berikut ini:

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

setelah itu cukup lakukan hal berikut untuk mengatur variabel lingkungan default:

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

Perhatikan bahwa PPA mencakup versi 6, 7 dan 8. Jadi Anda dapat menginstalnya dengan hanya mengubah nomor di jalur instalasi, misalnya:

sudo apt-get install oracle-java8-installer

Akan menginstal Java 8. Setelah menginstal versi Java yang ingin Anda gunakan dan mengatur versi ke default dengan update-java-alternativesperintah, Anda dapat memeriksa versi mana yang Anda gunakan dengan mengetik berikut ini:

java -version

Ini akan menunjukkan kepada Anda versi default yang Anda gunakan pada saat itu.

Saya juga ingin menyebutkan bahwa OpenJRE / JDK telah datang jauh dari 2 atau 3 tahun yang lalu ketika memiliki banyak masalah yang diselesaikan dengan mengubah ke Sun Java.

Luis Alvarado
sumber
11

Saya pikir masalahnya adalah bahwa beberapa paket Java bergantung pada default-jre yang mengarah ke openjdk-jre. Saya tidak berpikir ada cara mudah untuk menghapus instalan openjdk secara permanen. Masalahnya adalah Anda mungkin akan bertemu lagi dengan openjdk ketika Anda menginstal paket / program java.

Tetapi jika Anda ingin memiliki keduanya, apakah mudah untuk mengatur program runtime java (java, javah, javap, dan sebagainya) ke implementasi sun. Lakukan:

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

atau jika Anda seorang java dev (instal sdk dan srcs):

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

Dan atur sebagai program default dengan:

sudo update-java-alternatives -s java-6-sun
Marcos Roriz Junior
sumber
1
Ya, saya percaya ini tentang default-jre. Tidak, saya benar-benar tidak ingin memiliki Sun dan Open JDK - inilah pertanyaannya - untuk memiliki satu dan hanya dan membiarkannya menjadi Sun JDK. Apakah ada cara untuk meretas default-jre untuk menunjuk ke Sun JRE?
Ivan
Yap, saya akan mencoba membangun kembali default-jrepaket untuk menunjuk ke sun-java malam ini. Saat ini saya sedang bekerja.
Marcos Roriz Junior
6

The .jdk1.6.0_23.jinfofile harus daftar program yang disediakan dan jalan mereka. Ada header deskriptif yang diikuti oleh baris kosong. Kemudian daftar program dalam format tiga bidang: tipe entri (jre / jkd / plugin); nama program; dan jalan. Anda harus memiliki beberapa file jinfo yang dapat Anda gunakan untuk melihat seperti apa isinya. Ini kemungkinan digunakan oleh mekanisme alternatif untuk menentukan tautan mana yang akan dibuat. Kepala paket Sun saya adalah.

name = java-6-sun-1.6.0.22
alias = java-6-sun
prioritas = 63
bagian = tidak bebas

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

Jika Anda ingin mengganti perintah Java default tanpa menggunakan mekanisme alternatif, letakkan Java path Anda di depan / usr / bin di path Anda.

Ketika melakukan instalasi manual, saya menginstal Java di /opt. untuk pemasangan Anda, saya akan menginstal di /opt/jdk1.6.0_23. Lalu saya meletakkan path $JAVA_HOME/bindi awal PATHvariabel saya .

EDIT: Ini adalah file Sun keseluruhan. Catatan .java-6-sun.jinfoadalah tautan simbolis ke .java-6-sun-1.6.0.22.jinfo.

name = java-6-sun-1.6.0.22
alias = java-6-sun
prioritas = 63
bagian = tidak bebas

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
jre javaw / usr / lib / jvm / java-6-sun / jre / bin / javaw
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 unpack200 / usr / lib / jvm / java-6-sun / jre / bin / unpack200
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 extcheck / usr / lib / jvm / java-6-sun / bin / extcheck
jdk idlj / usr / lib / jvm / java-6-sun / bin / idlj
jar jdk / usr / lib / jvm / java-6-sun / bin / jar
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
skema jdk / usr / lib / jvm / java-6-sun / bin / schemagen
jdk serialver / usr / lib / jvm / java-6-sun / bin / serialver
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
plugin xulrunner-1.9-javaplugin.so /usr/lib/jvm/java-6-sun/jre/lib/amd64/libnpjp2.so
plugin mozilla-javaplugin.so /usr/lib/jvm/java-6-sun/jre/lib/amd64/libnpjp2.so
BillThor
sumber
Saya tidak memiliki java yang diinstal jadi saya tidak memiliki apa pun yang terkait dengannya, tidak ada yang diinstal, tidak ada file .jinfo dll. Saya membuat folder usr / lib / jvm sendiri karena saya membaca bahwa di situlah diinstal secara default, dan Aku akan tetap seperti itu. Itu sebabnya saya ingin melihat konten lengkap dari file .jinfo untuk JDK Sun.
Jurchiks
Saya telah menambahkan file .jinfo matahari penuh.
BillThor
6

Hapus openjdk dan icedtea:

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

tambahkan berikut ini ke /etc/apt/sources.list

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

instal Sun / Oracle JRE atau JDK:

apt-get install oracle-jdk7-installer
apt-get install oracle-java7-installer 
Fabian Zeindl
sumber
2
Dan setelah ini, Anda tidak memiliki Java sama sekali ... Pertanyaan sebenarnya merujuk pada siapa yang akan mengganti yang satu dengan yang lain, bukan bagaimana menghapus OpenJDK dari sistem Anda. Tambahkan sedikit lebih banyak informasi ke jawaban Anda, pertanyaan itu tidak dapat dijawab hanya dengan mengikuti langkah-langkah ini.
Bruno Pereira
4

Saya menambahkan baris ini ke file / etc / environment: JAVA_HOME = "/ usr / lib / jvm / jdk1.6.0_23" dan menambahkan JAVA_HOME / bin ke variabel PATH, TETAPI OS masih tidak mengenali perintah java, kata itu tidak diinstal dan menawarkan saya gcj dan openjdk.

Apakah Anda memeriksanya?

echo $JAVA_HOME 
echo $PATH

Jika Anda tidak membutuhkannya: Hapus instalasi openjdk dan gcj di sinaptik atau dengan apt-get.

apt-get remove gcj 
apt-get remove openjdk

Saya akan melarang java dari alternatif itu, dan melakukan sebagian besar seperti yang disarankan BillThor, mengapa saya memberinya upvote.

which javac
which java

harus menunjuk ke tempat Anda menginstal java, dan di mana ditemukan di PATH.

Pengguna tidak diketahui
sumber
Saya tidak menginstal gcj atau openjdk ... Hanya mencoba whichperintah dan tidak mencetak apa pun. Mengetahui bahwa saya lupa simbol $ sebelum variabel JAVA_HOME di PATH, saya akan memulai kembali sekarang dan melihat bagaimana hasilnya.
jurchiks
Restart PC, tetapi whichperintah masih tidak menunjukkan apa-apa. Baik variabel JAVA_HOME dan PATH benar: echo $ JAVA_HOME /usr/lib/jvm/jdk1.6.0_23 echo $ PATH $ JAVA_HOME / bin: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / games Di mana masalahnya? Sunting: Sialan, mengapa tidak ada jeda baris dalam komentar ??
jurchiks
a) me-restart PC seharusnya tidak diperlukan. Buka kembali shell harus mencukupi, atau sebagian besar login kembali sebagai pengguna. b) Lihat di dalam bantuan untuk memformat dalam komentar. Saya melihat echo $PATH $JAVA_HOME/bin:/usr/local/sbin...tetapi dalam hasilnya $ JAVA_HOME harus dievaluasi - ada sesuatu yang salah, atau pelaporan Anda salah. c) Linebreak: Mereka tidak ada di sana, sehingga kami terus menekan ENTER terlalu dini, dan kemudian jam berdetak, karena pengeditan hanya untuk beberapa menit diperbolehkan - Saya terus-menerus masuk ke perangkap itu. Saya membencinya! :)
pengguna tidak diketahui
Ya, variabel JAVA_HOME berada di file yang sama (/ etc / environment), tepat di baris pertama. Mungkin harus di tempat lain? Itu mengenalinya ketika saya mengetik echo $JAVA_HOME...
Jurchiks
Pertanyaan saya adalah: Apakah echo $PATHcetak $JAVA_HOME...atau tidak mencetak nilai untuk JAVA_HOME, yaitu: /usr/lib/jvm/jdk1.6.0_23?
pengguna tidak diketahui
3
  1. Buka System-> Administration-> Synaptic Package Manager dan kemudian hapus OpenJDK sepenuhnya.
  2. Versi uji Java mengetikkan java -versionshell (hanya akan menampilkan Sun java)
  3. Tipe sudo update-java-alternatives -l
  4. kamu selesai. Sekarang Anda hanya menginstal sun java dan pengaturannya sebagai default jdk

dan itu hanya berfungsi jika Anda memiliki dua jdk diinstal dan Anda ingin mengatur sun-java sebagai lingkungan default

Shohrat
sumber
2

Menggunakan Ubuntu 10.10, tampaknya Anda harus menandai untuk menghapus libaccess-bridge-java terlebih dahulu di Synaptic, dan kemudian tandai openjdk-6-jre-headless.

Saya berakhir dengan daftar yang akan dihapus:

ca-sertifikat-java, icedtea-6-jre-cacao, libaccess-bridge-java, libaccess-jembatan-java-jni, openjdk-6-jre, openjdk-6-jre-headless, openjdk-6-jre-lib.

Ini berhasil tetapi meninggalkan direktori di /etc/java-6-openjdkbelakang dengan berbagai macam file dan subdirektori di dalamnya, yang saya isolasi di direktori baru. Tidak ada efek yang tidak biasa, jadi mungkin itu hanya sisa sisa.

Ini meninggalkan saya dengan Java yang saya unduh langsung dari situs web Java. Namun, meskipun telah menetapkannya sebagai default dan membuat tautan ke direktori plugin Firefox, itu tidak lagi berfungsi. Menginstal sun-java6-jre dan paket-paket yang terkait gsfonts-x11, odbcinst, odbcinst1debian2, sun-java6-bin, dan unixodbc, melalui Synaptic, melihat plugin Java mulai bekerja kembali. Menghapus tautan di direktori plugins dan menggantinya dengan file libnpjp2.so yang sebenarnya tidak berfungsi. Menggunakan tautan ke file libjavaplugin_oji.so di direktori ns7 atau ns7-gcc29 di Java yang diinstal melalui Synaptic juga tidak berfungsi. Ini menunjukkan kepada saya bahwa untuk mendapatkan plugin Java terbaru di Firefox, seseorang dapat mengikuti instruksi di situs Java, dan bahwa Java Linux terintegrasi dengan varietas apa pun diperlukan untuk menjalankan Java yang diunduh, yang kemudian bergantung pada operasinya pada file yang mengelilinginya setelah plugin telah diaktifkan. Sementara pemahaman penuh tentang kode yang terdiri dari Jawa dan Linux akan diperlukan untuk benar-benar menyelesaikan misteri itu, mungkin eksperimen ini membantu dalam menemukan alasan mengapa dua Java mungkin diperlukan dalam kasus ini. Setidaknya dimungkinkan untuk menghapus semua Java juga, jika ada yang merasa berguna untuk melakukannya.

Steve
sumber
2

Hal yang saya lakukan pada mesin Ubuntu 10.10 baru adalah

  • tambahkan java-6-sun,
  • hapus openJDK (tambahkan sun Java terlebih dahulu jika tidak banyak hal akan dihapus seperti kucing jantan, dll)

Maka tidak masalah bagi saya, tidak ada lagi dependensi openJDK

Bob Yoplait
sumber
java-6-sun bukan paket-ubuntu-default, atau bukan?
Fabian Zeindl
2

Jawaban yang diberikan untuk pertanyaan ini tidak berhasil untuk saya. Artinya, berikut ini gagal:

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

Dengan kesalahan:

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

Coba petunjuk ini , sebagai gantinya:

  1. Buka Pusat Perangkat Lunak Ubuntu .
  2. Cari IcedTea.
  3. Hapus IcedTea Java Plug-in ( icedtea-6-jre-cacao), jika sudah diinstal.
  4. Pilih OpenJDK Java 7 Runtime.
  5. Klik Pasang.
  6. Tunggu paket 41,6 MB untuk diunduh dan diinstal.

OpenJDK (IcedTea) sekarang diinstal, yang seharusnya memungkinkan Anda (jika Anda memiliki kesalahan ini) untuk terus menginstal JDK Oracle tanpa kesalahan.

Lihat juga:

Dave Jarvis
sumber
1

Pertama: hapus plugin openjdk dan icedtea.

sudo apt-get remove openjdk* icedtea*

Kedua: salin file .bin jdk ke / opt atau / usr / java dan ekstrak.

sudo cp jdk_1.16.0.bin /usr/java

Ketiga: letakkan tautan file java ke / usr / bin /

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

perbarui alternatif menggunakan pembaruan-alternatif

Buat tautan simbolis ke Plugin Java di direktori plugin Firefox.

Buat tautan simbolis ke file Java Plugin libnpjp2.so di direktori plugin Firefox:

   cd  

<Firefox>/plugins


 ln -s  

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

Semoga ini membantu.

Pengguna aktif
sumber
Bukankah Anda melewatkan langkah setelah cp, dan sebelum menautkan? Dan: Anda menyarankan penautan manual, tetapi ada 45 file di java / bin, sebagian besar di antaranya dapat dieksekusi. Apakah Anda ingin membuat 25 tautan simbolik? Saya lebih suka mengubah PATH.
pengguna tidak diketahui
Sejauh yang saya tahu langkah-langkahnya benar. Anda dapat merujuk ke tutorial tentang halaman instalasi java sun (oracle). langkah-langkah di atas berhasil untuk saya !. beri tahu saya bagaimana Anda rukun.
Ubuntuser