Come rimuovere correttamente OpenJDK / OpenJRE e impostare SunJDK / SunJRE come predefinito


49

Ubuntu sembra favorire molto OpenJDK / JRE rispetto a Sun JDK / JRE. Anche dopo aver installato Sun JRE, JDK e plugin e aver trascorso un po 'di tempo a ritirare i pacchetti relativi a OpenJDK, apt-get li ha installati con alcuni pacchetti come dipendenza. Questo comportamento può essere corretto a favore dei pacchetti Sun Java? Mi piacerebbe avere un solo stack Java installato (sì, è un po 'di disturbo ossessivo compulsivo , ma mi piace avere i miei sistemi puliti) e voglio che sia Sun Java.

Aggiornamento: come nota Marcos Roriz, il problema sembra essere in default-jre (su cui i pacchetti dipendenti da Java usano dipendere) che punta a OpenJDK, quindi la domanda sembra andare su come hackerare default-jre / default-jdk per puntare a Sun Java.


per favore qualcuno aggiorni la risposta con oracle jdk ..
LoveToCode

Risposte:


35

Installazione di Sun Java su versioni precedenti di Ubuntu (9.10 e precedenti)

Penso che ho avuto lo stesso problema circa tre anni fa con Ubuntu 8.04. Si è verificato un problema strano durante l'utilizzo di openjre e il problema è stato risolto utilizzando la versione sun jre. Ecco i passaggi nel terminale che si applicano alle versioni inferiori a 10.04, poiché a partire da 10.04 sun java è stato eliminato e sostituito da 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

(Tutto ciò che riguarda Sun Java. Solo per essere sicuri)

Dopodiché, se avessi rimosso openjdk, avresti solo Sun Java. Se non l'hai rimosso, li hai entrambi. Per passare da uno all'altro, procedi come segue:

sudo update-java-alternatives -l - Questo ti mostrerà l'elenco dei motori Java che puoi usare.

Il nome dell'alternativa Java è quello a sinistra, quindi ad esempio openjdk apparirebbe così:

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

E imposteresti il ​​sistema su openjdk in questo modo:

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

Se si desidera utilizzare Sun, procedere come segue (dopo l'installazione dei pacchetti Sun):

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

Se si desidera utilizzare la versione di Java 7, è sufficiente modificare il numero 6 di cui sopra per 7. Ad esempio, se volessi installare la versione 7 di OpenJre, vorrei:

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

Installazione di Sun Java su versioni più recenti di Ubuntu (10.04 e successive)

Apri il terminale e digita quanto segue:

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

Ciò dovrebbe installare la versione di Sun Java sul tuo sistema. Per cambiarlo è sufficiente fare quanto segue nel caso in cui si abbiano altre alternative Java:

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

Se si desidera che l'installazione sia automatica, digitare quanto segue:

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

dopodiché è sufficiente fare quanto segue per impostare le variabili d'ambiente predefinite:

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

Si noti che il PPA include le versioni 6, 7 e 8. Quindi è possibile installarne uno semplicemente modificando il numero nella linea di installazione, ad esempio:

sudo apt-get install oracle-java8-installer

Installare Java 8. Dopo aver installato la versione Java che si desidera utilizzare e impostare la versione predefinita con il update-java-alternativescomando, è possibile verificare quale versione si sta utilizzando digitando quanto segue:

java -version

Ti mostrerà la versione predefinita che stai utilizzando in quel momento.

Vorrei anche ricordare che OpenJRE / JDK ha fatto molta strada da 2 o 3 anni fa quando aveva molti problemi che sono stati risolti passando a Sun Java.


11

Penso che il problema sia che alcuni pacchetti Java si basano su default-jre che punta a openjdk-jre. Non penso che ci sia un modo semplice per disinstallare permanentemente openjdk. Il fatto è che probabilmente ti imbatterai di nuovo in openjdk quando installi un pacchetto / programma java.

Ma se sei disposto ad avere entrambi, è facile impostare i programmi di runtime java (java, javah, javap e così via) sull'implementazione del sole. Fallo:

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

o se sei un dev java (installa sdk e srcs):

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

E impostalo come programmi predefiniti con:

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

1
Sì, credo che si tratti di default-jre. No, non voglio davvero avere sia Sun che Open JDK - questa è la domanda - avere uno e solo e lasciare che sia Sun JDK. C'è un modo per hackerare default-jre per puntare a Sun JRE?
Ivan,

Sì, proverò a ricostruire il default-jrepacchetto per indicare sun-java questa sera. In questo momento sono @ lavoro.
Marcos Roriz Junior

6

Il .jdk1.6.0_23.jinfofile dovrebbe essere un elenco dei programmi forniti e dei relativi percorsi. C'è un'intestazione descrittiva seguita da una riga vuota. Quindi un elenco dei programmi in un formato a tre campi: tipo di voce (jre / jkd / plugin); nome del programma; e percorso. Dovresti avere alcuni file jinfo che puoi usare per vedere come dovrebbero apparire i contenuti. Questo è probabilmente usato dal meccanismo alternativo per determinare quali collegamenti creare. Il capo del mio pacchetto Sun è.

name = java-6-sun-1.6.0.22
alias = java-6-sun
priority = 63
sezione = non-free

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

Se vuoi sovrascrivere i comandi Java predefiniti senza usare il meccanismo delle alternative, porta il tuo percorso Java davanti a / usr / bin nel tuo percorso.

Quando eseguo un'installazione manuale, installo Java /opt. per la tua installazione avrei installato /opt/jdk1.6.0_23. Quindi ho inserito il percorso $JAVA_HOME/binall'inizio della mia PATHvariabile.

EDIT: questo è l'intero file Sun. Nota .java-6-sun.jinfoè un collegamento simbolico a .java-6-sun-1.6.0.22.jinfo.

name = java-6-sun-1.6.0.22
alias = java-6-sun
priority = 63
sezione = non-free

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 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 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
jdk jar / 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
jdk schemagen / 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

Non ho alcun java installato, quindi non ho nulla in relazione con esso, niente installato, nessun file .jinfo ecc. Ho creato la cartella usr / lib / jvm perché ho letto che è lì che è installato di default, e Lo terrò in questo modo. Ecco perché mi piacerebbe vedere l'intero contenuto del file .jinfo per il Sun's JDK.
Jurchiks,

Ho aggiunto il file .jinfo full sun.
BillThor,

6

Elimina openjdk e icedtea:

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

aggiungi quanto segue a /etc/apt/sources.list

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

installa Sun / Oracle JRE o JDK:

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

2
E dopo questo non ti rimane affatto Java ... La domanda in realtà si riferisce a chi sostituirà l'uno con l'altro, non come rimuovere OpenJDK dal tuo sistema. Aggiungi un po 'più di informazioni alla tua risposta, non puoi rispondere alla domanda solo seguendo questi passaggi.
Bruno Pereira,

4

Ho aggiunto questa riga al file / etc / environment: JAVA_HOME = "/ usr / lib / jvm / jdk1.6.0_23" e ho aggiunto JAVA_HOME / bin alla variabile PATH, MA il sistema operativo non riconosce ancora il comando java, dice non è installato e mi offre gcj e openjdk.

L'hai controllato?

echo $JAVA_HOME 
echo $PATH

Se non ti serve: disinstalla openjdk e gcj in synaptic o con apt-get.

apt-get remove gcj 
apt-get remove openjdk

Divieto allora java di alternative, e farei principalmente come suggerito da BillThor, perché gli ho dato un voto.

which javac
which java

dovrebbe indicare dove hai installato java e dove si trova nel PERCORSO.


Non ho installato gcj o openjdk ... Ho appena provato i whichcomandi e non stampa nulla. Ho scoperto che ho dimenticato il simbolo $ prima della variabile JAVA_HOME in PATH, ricomincerò ora e vedrò come va.
Jurchiks,

Riavviato il PC, ma il whichcomando non mostra ancora nulla. Entrambe le variabili JAVA_HOME e PATH sono corrette: 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 Dove potrebbe essere il problema? Modifica: GOD DAMN IT, perché non ci sono interruzioni di riga nei commenti ??
Jurchiks,

a) non è necessario riavviare il PC. Riaprire la shell dovrebbe essere sufficiente o, di nuovo, accedere nuovamente come utente. b) Cerca all'interno della guida la formattazione nei commenti. Vedo, echo $PATH $JAVA_HOME/bin:/usr/local/sbin...ma nel risultato $ JAVA_HOME deve essere valutato - c'è qualcosa che non va o la tua segnalazione è errata. c) Interruzioni di riga: non sono presenti, quindi premiamo costantemente INVIO troppo presto, quindi il tempo passa, perché la modifica è consentita solo per pochi minuti - passo costantemente in quella trappola. Lo odio! :)
utente sconosciuto

Bene, la variabile JAVA_HOME è nello stesso file (/ etc / environment), proprio nella prima riga. Forse dovrebbe essere altrove? Lo riconosce quando echo $JAVA_HOME
scrivo

La mia domanda era: non echo $PATHstampa $JAVA_HOME...o lo fa stampare il valore per JAVA_HOME, vale a dire: /usr/lib/jvm/jdk1.6.0_23?
utente sconosciuto

3
  1. Apri Sistema-> Amministrazione-> Gestore pacchetti Synaptic, quindi rimuovi completamente OpenJDK.
  2. Versione di prova della digitazione Java java -versionnella shell (verrà visualizzato solo Sun Java)
  3. genere sudo update-java-alternatives -l
  4. hai fatto. Ora hai installato solo Sun Java ed è configurato come jdk predefinito

e funziona solo se hai due jdk installati e vuoi impostare sun-java come ambiente predefinito


2

Usando Ubuntu 10.10, sembra che sia necessario contrassegnare per la rimozione libaccess-bridge-java prima in Synaptic, e quindi contrassegnare openjdk-6-jre-headless.

Ho finito con un elenco da rimuovere:

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

Questo ha funzionato ma ha lasciato una directory /etc/java-6-openjdkcon file assortiti e sottodirectory all'interno, che ho isolato in una nuova directory. Non ci sono stati effetti insoliti, quindi presumibilmente è solo un residuo.

Questo mi ha lasciato con Java che avevo scaricato direttamente dal sito Web Java. Tuttavia, nonostante abbia impostato l'impostazione predefinita e creato il collegamento alla directory dei plugin di Firefox, non ha più funzionato. L'installazione di sun-java6-jre e dei relativi pacchetti gsfonts-x11, odbcinst, odbcinst1debian2, sun-java6-bin e unixodbc, tramite Synaptic, hanno visto ricominciare a funzionare il plugin Java. Rimuovere il collegamento nella directory dei plugin e sostituirlo con il file libnpjp2.so effettivo non ha funzionato. Anche l'uso di un collegamento ai file libjavaplugin_oji.so nelle directory ns7 o ns7-gcc29 in Java installate tramite Synaptic non ha funzionato. Questo mi suggerisce che per ottenere l'ultimo plug-in Java in Firefox è possibile seguire le istruzioni sul sito Web Java e che è necessario il Java Java integrato di qualsiasi varietà sia necessaria per eseguire il Java scaricato, che si basa quindi sul suo funzionamento sui file che lo circondano dopo l'attivazione del plug-in. Mentre sarebbe necessaria una piena comprensione del codice che comprende Java e Linux per risolvere davvero i suoi misteri, forse questi esperimenti sono utili per trovare i motivi per cui in questo caso potrebbero essere necessari due Java. Almeno è possibile rimuovere anche tutto Java, se qualcuno lo trova utile per farlo.


2

La cosa che faccio sulle nuove macchine Ubuntu 10.10 è

  • aggiungi java-6-sun,
  • rimuovere openJDK (aggiungere prima Sun Java altrimenti un mucchio di cose verranno rimosse come Tomcat, ecc.)

Quindi per me va bene, niente più dipendenze openJDK


java-6-sun non è il pacchetto ubuntu-default, o è?
Fabian Zeindl,

2

Le risposte fornite a questa domanda non hanno funzionato per me. Cioè, il seguente non è riuscito:

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

Con l'errore:

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

Prova invece queste istruzioni :

  1. Apri Ubuntu Software Center .
  2. Cerca IcedTea.
  3. Rimuovere il plug-in Java IcedTea ( icedtea-6-jre-cacao), se installato.
  4. Seleziona OpenJDK Java 7 Runtime.
  5. Fai clic su Installa.
  6. Attendere il download e l'installazione del pacchetto da 41,6 MB.

OpenJDK (IcedTea) è ora installato, il che dovrebbe consentire all'utente (se si fosse verificato questo errore) di continuare l'installazione di Oracle JDK senza errori.

Guarda anche:


1

Primo: rimuovi il plugin openjdk e icedtea.

sudo apt-get remove openjdk* icedtea*

Secondo: copiare il file .bin jdk in / opt o / usr / java ed estrarlo.

sudo cp jdk_1.16.0.bin /usr/java

Terzo: inserisci un link del file java in / 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

aggiorna le alternative usando update-alternatives

Creare un collegamento simbolico al plug-in Java nella directory dei plug-in di Firefox.

Creare un collegamento simbolico al file libnpjp2.so del plug-in Java nella directory dei plug-in di Firefox:

   cd  

<Firefox>/plugins


 ln -s  

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

Spero che sia di aiuto.


Non hai perso un passaggio dopo cp e prima del collegamento? E: suggerisci il collegamento manuale, ma ci sono 45 file in java / bin, molti dei quali eseguibili. Vorresti creare 25 collegamenti simbolici? Preferirei cambiare il PERCORSO.
utente sconosciuto il

per quanto ne so i passaggi sono corretti. puoi fare riferimento al tutorial sulla pagina di installazione java di sun (oracle). i passaggi precedenti hanno funzionato per me !. fammi sapere come vai d'accordo.
Ubuntuser,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.