Я использую Java keytool как часть большого скрипта bash. Мне нужно передать пароль для создания хранилища ключей, поэтому использовал команду keytool -importkeystore -deststorepass:file ${somefile} .

Этот -deststorepass:file доступен только в Java 7, согласно документам http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/keytool.html http://docs.oracle.com. /javase/7/docs/technotes/tools/solaris/keytool.html

У меня уже работал скрипт, но я думаю, что на этом компьютере Java по умолчанию должна быть Java 6, и я не уверен, что могу быть уверен, что update-alternatives -config java можно считать стабильным.

Кто-нибудь знает, пожалуйста, как установить версию Java для конкретного сценария для среды Linux? Я видел это, но сам не смог перевести это на Linux. Переключение между Java 7 и 8 в OS X

Спасибо!

1 ответ1

0

Я предполагаю, что вы не хотите временно изменить общесистемную виртуальную машину Java по умолчанию, которая может иметь неожиданные побочные эффекты для других приложений, а просто найти машину, подходящую для ваших целей.

Предполагая, что ваши JVM установлены в каталогах без пробелов (простое предположение в стандартных дистрибутивах):

# 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 <...>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .