Как запустить одно приложение (JShell) на JDK 9, а все остальные на JDK 8?
Я пытаюсь работать с jshell из Java 9. Поэтому для этого я установил JDK 9 на свой Mac, где у меня уже был установлен JDK 8.
Все мои проекты, рабочие области, Hadoop, Spark и зависимые API используют JDK 8. Поэтому для текущего сценария я не могу переместить все свои проекты для работы с JDK 9.
Поэтому мне нужна небольшая утилита или умный способ переключения между JDK 8 и JDK 9 по требованию.
На данный момент я занимаюсь:
Откройте терминал.
kv:micro-tab karan.verma$ echo $JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
Установите JAVA_HOME временно на JDK 9
kv:Home karan.verma$ export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
запустить JShell
kv:Home karan.verma$ jshell | Welcome to JShell -- Version 9.0.1 | For an introduction type: /help intro
закройте терминал, когда закончите. Это означает, что глобальный JAVA_HOME работает сейчас.
kv:micro-tab karan.verma$ echo $JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
Итак, мой вопрос: есть ли лучший способ сделать это? Или это хорошая практика, чтобы делать такие вещи? Пожалуйста, предложите.
1 ответ
Вы можете написать сценарий. Сбросьте env и запустите jshell на своем пути.
#!/bin/sh
# path
export PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
# java
export JAVA_HOME=/opt/jdk-11
export PATH=$JAVA_HOME/bin:$PATH
$JAVA_HOME/bin/jshell $@
Вот как я решил проблему:
Удалите JDK 9, установите JDK 8, а затем установите JDK 9.
Добавьте соответствующие пути JAVA_HOME для версий 8 и 9. Установите псевдоним для них обоих и установите Java 8 в качестве JDK по умолчанию.
export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8) export JAVA_9_HOME=$(/usr/libexec/java_home -v1.9) alias java8='export JAVA_HOME=$JAVA_8_HOME' alias java9='export JAVA_HOME=$JAVA_9_HOME' #default java8 export JAVA_HOME=$JAVA_8_HOME
Теперь просто установите java 8 или java 9, используя псевдоним для переключения между версиями следующим образом:
java8 java9