¿Hay alguna manera de cambiar rápidamente todas las alternativas relacionadas con Java usando update-alternatives
?
Por ejemplo, si quiero cambiar Java a 7, ejecuto sudo update-alternatives --config java
y selecciono Java 7 OpenJdk. Pero si corro update-alternatives --get-selections | grep java
me sale lo siguiente,
appletviewer auto /usr/lib/jvm/java-6-openjdk-amd64/bin/appletviewer
extcheck auto /usr/lib/jvm/java-6-openjdk-amd64/bin/extcheck
idlj auto /usr/lib/jvm/java-6-openjdk-amd64/bin/idlj
itweb-settings auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/itweb-settings
jar auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jar
jarsigner auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jarsigner
java manual /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
javac auto /usr/lib/jvm/java-6-openjdk-amd64/bin/javac
javadoc auto /usr/lib/jvm/java-6-openjdk-amd64/bin/javadoc
javah auto /usr/lib/jvm/java-6-openjdk-amd64/bin/javah
javap auto /usr/lib/jvm/java-6-openjdk-amd64/bin/javap
javaws auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/javaws
jconsole auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jconsole
jdb auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jdb
jexec auto /usr/lib/jvm/java-6-openjdk-amd64/jre/lib/jexec
jhat auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jhat
jinfo auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jinfo
jmap auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jmap
jps auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jps
jrunscript auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jrunscript
jsadebugd auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jsadebugd
jstack auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jstack
jstat auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jstat
jstatd auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jstatd
keytool auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/keytool
native2ascii auto /usr/lib/jvm/java-6-openjdk-amd64/bin/native2ascii
orbd auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/orbd
pack200 auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/pack200
policytool auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/policytool
rmic auto /usr/lib/jvm/java-6-openjdk-amd64/bin/rmic
rmid auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/rmid
rmiregistry auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/rmiregistry
schemagen auto /usr/lib/jvm/java-6-openjdk-amd64/bin/schemagen
serialver auto /usr/lib/jvm/java-6-openjdk-amd64/bin/serialver
servertool auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/servertool
tnameserv auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/tnameserv
unpack200 auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/unpack200
wsgen auto /usr/lib/jvm/java-6-openjdk-amd64/bin/wsgen
wsimport auto /usr/lib/jvm/java-6-openjdk-amd64/bin/wsimport
xjc auto /usr/lib/jvm/java-6-openjdk-amd64/bin/xjc
Como puede ver, mi alternativa Java se cambió a 7, pero no se cambió ninguna otra alternativa basada en OpenJDK 6. Claro que podría cambiar cada uno manualmente o escribir un script para hacerlo, pero supongo que hay una mejor manera de lograr esto.
fuente
update-java-alternatives
cambia todas las demás alternativas de Java, incluso cuando la configuración del complemento arroja un error.update-java-alternatives --set java-1.8.0-openjdk-amd64
todavía tengodefault-java -> /usr/lib/jvm/java-7-oracle
. ¿Es esto causado por elno alternatives for mozilla-javaplugin.so
error? ¿Cómo puedo cambiar esto también?jbro hizo la misma pregunta en http://ubuntuforums.org/showthread.php?t=1817528 y escribió un script para este problema,
Si no hay una mejor respuesta, esto parece una solución sólida, pero supongo que debe haber una mejor manera de
update-alternatives
manejar esto.Edité un poco el código, ya que no te permite hacer los cambios antes de instalarlos. Agregué dos líneas más de la siguiente manera ...
fuente
Para Oracle JVM, ejecute esto:
fuente
<TL; DR> update-java-alternative utiliza el archivo .jinfo para determinar qué alternativas cambiar, pero también espera que se hayan configurado por separado.
Cree un nuevo archivo .jinfo y actualice las entradas alternativas si su JRE / JDK descargado no cambia con update-java-alternative
[Detalles]
Para configurarlo manualmente:
Descomprima su nuevo jdk junto con el jdk existente en
/usr/lib/jvm/
Genere un archivo .jdkname.jinfo duplicando otro archivo .jinfo en la carpeta (o tome uno de otra instalación de Ubuntu: está detrás de la plantilla tanto como cualquier otra cosa).
El nombre del archivo. jdkname .jinfo debe coincidir con el nombre de la carpeta jdk.
Modifique el contenido para establecer el encabezado (nombres) y las rutas de los archivos (entradas del programa) para que coincidan con su nueva instalación.
Elimine las líneas que se refieren a programas omitidos en su versión y agregue líneas para nuevos programas en
/bin
Genere alternativas para todos los programas ahora en su paquete .jinfo con esta plantilla:
(Varias respuestas relacionadas han escrito esto desde el contenido de / bin o puede realizar la búsqueda / reemplazo de expresiones regulares en su archivo .jinfo para generar los comandos del script).
Tenga en cuenta que el 100 es solo la prioridad que se considera al configurar la versión jdk utilizando el indicador automático.
Verifique las alternativas de Java y cambie para usar el JDK.
Tenga en cuenta que algunos JDK no incluyen el JRE, por lo tanto, agréguelo o elimine esas entradas de jinfo.
fuente