我正在尝试使用Java 9的jshell。因此,我在我的Mac上安装了JDK 9,我已经安装了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
kv:Home karan.verma$ export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
kv:Home karan.verma$ jshell
| Welcome to JShell -- Version 9.0.1
| For an introduction type: /help intro
kv:micro-tab karan.verma$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
所以,我的问题是,有没有更好的方法来做到这一点?或者这是做这类事情的好习惯?请建议。
你可以写一个脚本。重置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 $@
这是我如何解决这个问题:
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
java8
java9