Altera temporariamente a versão Java no script bash - Ubuntu Linux

0

Estou usando o keytool Java como parte de um script bash maior. Eu preciso passar uma senha para criar um keystore, então usei o comando keytool -importkeystore -deststorepass:file ${somefile} .

Este -deststorepass:file está disponível apenas no Java 7, de acordo com os documentos link link

Já tive o script funcionando antes, mas acho que nesta máquina o Java padrão deve ser o Java 6, e não tenho certeza se posso ter certeza de que update-alternatives -config java pode ser considerado estável.

Alguém por favor sabe de uma maneira de definir a versão do Java para um script específico para um ambiente Linux? Eu vi isso, mas não consegui traduzi-lo para o Linux. Alternando entre o Java 7 e o 8 no OS X

Obrigado!

    
por user369993 19.09.2014 / 02:14

1 resposta

0

Eu acho que seu desejo não é mudar temporariamente a máquina Java virtual padrão do sistema, que pode ter efeitos colaterais inesperados para outros aplicativos, mas simplesmente encontrar uma máquina que seja adequada para o seu propósito.

Assumindo que suas JVMs estão instaladas em diretórios sem espaços (uma suposição fácil em distribuições padrão):

# wantedArg is the argument that we need 
function getSuitableAlternative() {
  cmd=$1
  wantedArg=$2
  JVM_LIST=$(update-alternatives --list $cmd) 

  # Try all available JVMs until we find one supporting the specified parameter
  for jvm in $JVM_LIST 
  do
    $jvm -help |grep -q -- -$wantedArg && { echo $jvm; break; }
  done
}

# Find a "java" command supporting "deststorepass" argument
suitableJvm=$(getSuitableAlternative java deststorepass)

# Bad luck. 
if [ "$suitableJvm" == "" ]
then 
  echo "No suitable JVM machine found" >&2
  echo "Please sudo apt-get install jdk7..." >&2
  exit 1 
fi

$suitableJvm <...>
    
por 16.10.2014 / 17:20