Como mudar o ambiente java para um processo específico?

1

Eu uso o openjdk no meu trabalho, mas às vezes eu preciso do jre do oracle ou até da versão específica do jre do oracle. Como eu sei, devo atualizar o JAVA_HOME value e /usr/bin/java ou /etc/alternatives/java link destination. Existe uma maneira inteligente / segura / fácil de fazer essas alterações temporárias para um processo específico? Obrigado! (Eu estou usando repo instável debian linux)

    
por drozdik 25.06.2015 / 15:59

1 resposta

1

Is there a smart/secure/easy way to make these changes temporary for specific process?

Variáveis de ambiente como $JAVA_HOME são herdadas, não globais para o sistema. Portanto, se você definir uma maneira específica, ela se aplicará apenas a esse processo e, se exportada, qualquer processo gerado.

O processo aqui seria uma instância de shell; você pode fazer isso na linha de comando ou criar algo assim:

#!/bin/sh

PATH=/opt/oracle/java/bin:$PATH
export $PATH
exec whatever.jar

Caso você não esteja familiarizado com a forma como $PATH funciona, os diretórios são verificados em ordem, portanto, neste caso, /opt/oracle/java/bin será pesquisado antes de mais nada, e quando java for necessário, aquele será usado .

Você pode elaborar isso para usar argumentos quando invocá-lo para especificar qual arquivo .jar ou .class a ser executado, e algum argumento abreviado para o qual a instalação java deve ser usada, por exemplo, if [[ $1 == 2 ]]; then PATH=/opt/oracle2/java/bin... .

Esse $PATH (e $JAVA_HOME , se você fizer isso também) só será aplicado ao script e a qualquer coisa que ele começar.

Se você está trabalhando em algo, você pode export as variáveis em um terminal e ele continuará a se aplicar lá e somente lá. Se você tiver o JDK instalado, o mesmo diretório bin contém javac , etc.

    
por 25.06.2015 / 16:13