Existe uma maneira de alternar rapidamente todas as alternativas relacionadas ao Java usando update-alternatives
?
Por exemplo, se você deseja alternar o Java para 7, eu corro sudo update-alternatives --config java
e seleciono o Java 7 OpenJdk. Mas se eu correr update-alternatives --get-selections | grep java
, recebo o seguinte,
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 você pode ver, minha alternativa Java foi trocada para 7, mas todas as outras alternativas baseadas no OpenJDK 6 não foram trocadas. Claro que eu poderia alternar cada um manualmente ou escrever um script para fazê-lo, mas presumo que haja uma maneira melhor de fazer isso.
fonte
update-java-alternatives
altera todas as outras alternativas java, mesmo quando a configuração do plug-in gera um erro.update-java-alternatives --set java-1.8.0-openjdk-amd64
eu ainda tenhodefault-java -> /usr/lib/jvm/java-7-oracle
. Isso é causado pelono alternatives for mozilla-javaplugin.so
erro? Como posso mudar isso também?O jbro fez a mesma pergunta em http://ubuntuforums.org/showthread.php?t=1817528 e escreveu um script para esse problema,
Se não houver uma resposta melhor, isso parece uma solução sólida, mas suponho que deve haver uma maneira melhor
update-alternatives
de lidar com isso.Editei um pouco o código, pois ele não permite que você faça as alterações antes de instalá-las. Eu adicionei mais duas linhas da seguinte forma ...
fonte
Para Oracle JVM, execute o seguinte:
fonte
O <TL; DR> update-java-alternative usa o arquivo .jinfo para determinar quais alternativas alternar, mas também espera que elas tenham sido configuradas separadamente.
Crie um novo arquivo .jinfo e entradas de atualização alternativa se o JRE / JDK baixado não alternar com o update-java-alternative
[Detalhes]
Para configurá-lo manualmente:
Descompacte seu novo jdk ao lado do jdk existente no
/usr/lib/jvm/
Gere um arquivo .jdkname.jinfo duplicando outro arquivo .jinfo na pasta (ou pegue um de outra instalação do Ubuntu: você está atrás do modelo tanto quanto qualquer outra coisa).
O nome do arquivo. jdkname .jinfo deve corresponder ao nome da pasta do jdk.
Modifique o conteúdo para definir o cabeçalho (nomes) e os caminhos do arquivo (entradas do programa) para corresponder à sua nova instalação.
Remova todas as linhas referentes aos programas omitidos na sua versão e adicione linhas para novos programas em
/bin
Gere alternativas para todos os programas agora no seu pacote .jinfo com este modelo:
(Várias respostas relacionadas o escreveram no conteúdo de / bin ou você pode executar a pesquisa / substituição de regexp no arquivo .jinfo para gerar os comandos de script.)
Observe que 100 é apenas a prioridade considerada ao definir a versão do jdk usando o sinalizador automático.
Verifique as alternativas java e alterne para usar o JDK.
Observe que alguns JDKs não incluem o JRE, portanto, adicione-o ou remova essas entradas do jinfo.
fonte