Cómo eliminar correctamente OpenJDK / OpenJRE y establecer SunJDK / SunJRE como predeterminado


49

Ubuntu parece favorecer mucho a OpenJDK / JRE sobre Sun JDK / JRE. Incluso después de que instalé Sun JRE, JDK y el complemento y pasé algún tiempo sacando paquetes relacionados con OpenJDK, apt-get los ha instalado nuevamente con algunos paquetes como una dependencia. ¿Se puede corregir este comportamiento a favor de los paquetes Sun Java? Me gustaría tener una única pila Java instalada (sí, es un poco de OCD , pero me gusta tener mis sistemas limpios) y quiero que sea Sun Java.

Actualización: como señala Marcos Roriz, el problema parece estar en default-jre (del que dependen los paquetes dependientes de Java) que apunta a OpenJDK, por lo que la pregunta parece ser cómo hackear default-jre / default-jdk para señalar a Sun Java.


por favor, alguien actualice la respuesta con Oracle JDK ..
LoveToCode

Respuestas:


35

Instalación de Sun Java en versiones anteriores de Ubuntu (9.10 y posteriores)

Tuve el mismo problema una vez hace unos tres años con Ubuntu 8.04, creo. Hubo un problema extraño al usar openjre y el problema se resolvió usando la versión sun jre. Estos son los pasos en la terminal que se aplican a las versiones inferiores a 10.04, ya que a partir de 10.04 sun java se ha eliminado y reemplazado por 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

(Todo lo relacionado con Sun Java. Solo para asegurarse)

Después de eso, si eliminaste openjdk, solo tendrías sun java. Si no lo eliminó, entonces tiene ambos. Para cambiar de uno a otro, haga esto:

sudo update-java-alternatives -l - Esto le mostrará la lista de motores Java que puede usar.

El nombre de la alternativa de Java es el de la izquierda, por lo que, por ejemplo, openjdk aparecería así:

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

Y configuraría el sistema para abrir jdk de esta manera:

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

Si desea utilizar Sun, haga esto (después de la instalación de los paquetes de Sun):

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

Si desea utilizar la versión de Java 7, simplemente cambie el número 6 mencionado anteriormente por 7. Por ejemplo, si quisiera instalar la versión 7 de Openjre, haría lo siguiente:

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

Instalación de Sun Java en versiones más nuevas de Ubuntu (10.04 y anteriores)

Abra la terminal y escriba lo siguiente:

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

Eso debería instalar la versión Sun Java en su sistema. Para cambiarlo, simplemente haga lo siguiente en caso de que tenga otras alternativas de Java:

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

Si desea que la instalación sea automática, escriba lo siguiente:

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

después de eso, simplemente haga lo siguiente para establecer las variables de entorno predeterminadas:

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

Tenga en cuenta que el PPA incluye las versiones 6, 7 y 8. Para que pueda instalar cualquiera de ellos simplemente cambiando el número en la línea de instalación, por ejemplo:

sudo apt-get install oracle-java8-installer

Instalaría Java 8. Después de instalar la versión de Java que desea utilizar y establecer la versión predeterminada con el update-java-alternativescomando, puede verificar qué versión está utilizando escribiendo lo siguiente:

java -version

Le mostrará la versión predeterminada que está utilizando en ese momento.

También me gustaría mencionar que OpenJRE / JDK ha recorrido un largo camino desde hace 2 o 3 años cuando tenía muchos problemas que se resolvieron al cambiar a Sun Java.


11

Creo que el problema es que algunos paquetes de Java se basan en default-jre que apunta a openjdk-jre. No creo que haya una manera fácil de desinstalar permanentemente openjdk. La cuestión es que probablemente te encuentres con openjdk nuevamente cuando instales un paquete / programa java.

Pero si está dispuesto a tener ambos, ¿es fácil configurar los programas de tiempo de ejecución de Java (Java, Java, Java, etc.) para la implementación de Sun? Hazlo:

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

o si eres un desarrollador de java (instala el sdk y srcs):

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

Y configúrelo como los programas predeterminados con:

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

1
Sí, creo que se trata de default-jre. No, realmente no quiero tener JDK Sun y Open - de eso se trata la cuestión - tener uno solo y dejar que sea Sun JDK. ¿Hay alguna manera de hackear default-jre para apuntar a Sun JRE?
Ivan

Sí, intentaré reconstruir el default-jrepaquete para señalar Sun-Java esta noche. Ahora mismo soy @ trabajo.
Marcos Roriz Junior

6

El .jdk1.6.0_23.jinfoarchivo debe ser una lista de los programas suministrados y sus rutas. Hay un encabezado descriptivo seguido de una línea en blanco. Luego, una lista de los programas en un formato de tres campos: tipo de entrada (jre / jkd / plugin); nombre del programa; y camino. Debería tener algunos archivos jinfo que pueda usar para ver cómo debe verse el contenido. Es probable que esto sea utilizado por el mecanismo de alternativas para determinar qué enlaces crear. El jefe de mi paquete de Sun es.

nombre = java-6-sun-1.6.0.22
alias = java-6-sun
prioridad = 63
sección = no libre

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

Si desea anular los comandos Java predeterminados sin utilizar el mecanismo de alternativas, coloque su ruta Java delante de / usr / bin en su ruta.

Cuando hago una instalación manual, instalo Java en /opt. para su instalación me habría instalado en /opt/jdk1.6.0_23. Luego puse el camino $JAVA_HOME/binal comienzo de mi PATHvariable.

EDITAR: Este es todo el archivo Sun. La nota .java-6-sun.jinfoes un enlace simbólico a .java-6-sun-1.6.0.22.jinfo.

nombre = java-6-sun-1.6.0.22
alias = java-6-sun
prioridad = 63
sección = no libre

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

No tengo ningún java instalado, así que no tengo nada relacionado, nada instalado, ningún archivo .jinfo, etc. Creé la carpeta usr / lib / jvm porque leí que es donde está instalado de forma predeterminada, Lo voy a mantener así. Es por eso que me gustaría ver el contenido completo del archivo .jinfo para el JDK de Sun.
jurchiks

He agregado el archivo .jinfo de sun completo.
BillThor

6

Eliminar openjdk e icedtea:

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

agregue lo siguiente a /etc/apt/sources.list

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

instalar Sun / Oracle JRE o JDK:

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

2
Y después de esto, no tiene Java en absoluto ... La pregunta en realidad se refiere a quién reemplazar uno por otro, no cómo eliminar OpenJDK de su sistema. Agregue un poco más de información a su respuesta, la pregunta no se puede responder solo siguiendo estos pasos.
Bruno Pereira

4

Agregué esta línea al archivo / etc / environment: JAVA_HOME = "/ usr / lib / jvm / jdk1.6.0_23" y agregué JAVA_HOME / bin a la variable PATH, pero el sistema operativo aún no reconoce el comando java, dice no está instalado y me ofrece gcj y openjdk.

¿Lo comprobaste?

echo $JAVA_HOME 
echo $PATH

Si no lo necesita: desinstale openjdk y gcj en synaptic o con apt-get.

apt-get remove gcj 
apt-get remove openjdk

Entonces prohibiría a Java las alternativas, y haría sobre todo como sugirió BillThor, por qué le di un voto positivo.

which javac
which java

debe señalar dónde instaló Java y dónde se encuentra en la RUTA.


No tengo instalado gcj u openjdk ... Acabo de probar los whichcomandos y no imprime nada. Descubrí que olvidé el símbolo $ antes de la variable JAVA_HOME en PATH, reiniciaré ahora y veré cómo funciona.
jurchiks

Reinició la PC, pero el whichcomando aún no muestra nada. Las variables JAVA_HOME y PATH son correctas: 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 ¿Dónde podría estar el problema? Editar: DIOS MALDITO, ¿por qué no hay saltos de línea en los comentarios?
jurchiks

a) no debería ser necesario reiniciar la PC. Volver a abrir el shell debería ser suficiente o, en su mayoría, volver a iniciar sesión como usuario. b) Busque dentro de la ayuda para formatear los comentarios. Ya veo, echo $PATH $JAVA_HOME/bin:/usr/local/sbin...pero en el resultado se debe evaluar $ JAVA_HOME: hay algo mal o su informe es erróneo. c) Saltos de línea: no están allí, por lo que constantemente presionamos ENTER demasiado pronto, y luego el reloj avanza, porque la edición es solo por unos minutos permitidos, constantemente me meto en esa trampa. ¡Lo odio! :)
usuario desconocido

Bueno, la variable JAVA_HOME está en el mismo archivo (/ etc / environment), solo en la primera línea. Tal vez debería estar en otro lugar? Sin embargo, lo reconoce cuando echo $JAVA_HOME
escribo

Mi pregunta fue: ¿ echo $PATHImprime $JAVA_HOME...o imprime el valor de JAVA_HOME, es decir /usr/lib/jvm/jdk1.6.0_23:?
Usuario desconocido

3
  1. Abra Sistema-> Administración-> Synaptic Package Manager y luego elimine completamente OpenJDK.
  2. Versión de prueba de Java escribiendo java -versionen shell (solo mostrará Sun java)
  3. Tipo sudo update-java-alternatives -l
  4. estás listo. Ahora solo tiene instalado sun java y está configurado como jdk predeterminado

y solo funciona si tienes dos jdk instalados y quieres configurar sun-java como entorno predeterminado


2

Usando Ubuntu 10.10, parece que necesita marcar para eliminar libaccess-bridge-java primero en Synaptic, y luego marcar openjdk-6-jre-headless.

Terminé con una lista para eliminar:

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

Esto funcionó pero dejó un directorio /etc/java-6-openjdkatrás con una variedad de archivos y subdirectorios dentro, que aislé en un nuevo directorio. No ha habido efectos inusuales, por lo que presumiblemente es solo un remanente sobrante.

Esto me dejó con el Java que había descargado directamente del sitio web de Java. Sin embargo, a pesar de haberlo configurado como predeterminado y crear el enlace al directorio de complementos de Firefox, ya no funcionaba. Al instalar sun-java6-jre y sus paquetes asociados gsfonts-x11, odbcinst, odbcinst1debian2, sun-java6-bin y unixodbc, a través de Synaptic, el complemento de Java comenzó a funcionar nuevamente. Eliminar el enlace en el directorio de complementos y reemplazarlo con el archivo libnpjp2.so real no funcionó. El uso de un enlace a los archivos libjavaplugin_oji.so en los directorios ns7 o ns7-gcc29 en Java instalado a través de Synaptic tampoco funcionó. Esto me sugiere que para obtener el último complemento de Java en Firefox se pueden seguir las instrucciones en el sitio web de Java, y que se necesita el Java Java integrado de cualquier variedad que esté presente para ejecutar el Java descargado, que luego depende de su funcionamiento en los archivos que lo rodean una vez que se ha activado el complemento. Si bien se necesitaría una comprensión completa del código que comprende Java y Linux para resolver realmente sus misterios, tal vez estos experimentos sean útiles para encontrar las razones por las que se pueden necesitar dos Java en este caso. Al menos también es posible eliminar todo Java, si a alguien le resulta útil hacerlo.


2

Lo que hago en las nuevas máquinas Ubuntu 10.10 es

  • agregue java-6-sun,
  • elimine openJDK (agregue sun Java primero; de lo contrario, se eliminarán muchas cosas como tomcat, etc.)

Entonces está bien para mí, no más dependencias de openJDK


java-6-sun ¿no es el paquete predeterminado de ubuntu, o no?
Fabian Zeindl

2

Las respuestas dadas a esta pregunta no me funcionaron. Es decir, lo siguiente falló:

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

Con el error:

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

Pruebe estas instrucciones , en su lugar:

  1. Abra el Centro de software de Ubuntu .
  2. Busca IcedTea.
  3. Elimine el complemento Java IcedTea ( icedtea-6-jre-cacao), si está instalado.
  4. Seleccione OpenJDK Java 7 Runtime.
  5. Haz clic en Instalar.
  6. Espere a que se descargue e instale el paquete de 41.6 MB.

El OpenJDK (IcedTea) ahora está instalado, lo que debería permitirle (si tuvo este error) continuar instalando el JDK de Oracle sin error.

Ver también:


1

Primero: elimine el complemento openjdk e icedtea.

sudo apt-get remove openjdk* icedtea*

Segundo: copie el archivo .bin jdk a / opt o / usr / java y extráigalo.

sudo cp jdk_1.16.0.bin /usr/java

Tercero: ponga un enlace del archivo java a / 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

Actualice las alternativas utilizando las alternativas de actualización

Cree un enlace simbólico al complemento de Java en el directorio de complementos de Firefox.

Cree un enlace simbólico al archivo libnpjp2.so de Java Plugin en el directorio de complementos de Firefox:

   cd  

<Firefox>/plugins


 ln -s  

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

Espero que esto ayude.


¿No te perdiste un paso después de cp y antes de vincular? Y: sugiere vinculación manual, pero hay 45 archivos en java / bin, la mayoría de ellos ejecutables. ¿Te gustaría hacer 25 enlaces simbólicos? Preferiría cambiar la RUTA.
Usuario desconocido

Que yo sepa, los pasos son correctos. Puede consultar el tutorial sobre la página de instalación de Java de Sun (Oracle). ¡los pasos anteriores me funcionaron! déjame saber cómo te llevas.
Ubuntuser
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.