我在14.04机器上安装了Java7和Java8的组合。
当我想在他们之间切换时,我做了一个sudo update-alternatives --config java
。但是,以这种方式更改它会更改所有终端上的当前Java版本。我只想为当前终端更改它。例如,我想将一些用1.7编写的Java代码与其他用1.8编写的代码进行测试。
另一种选择是做类似的事情
function java_use() {
export JAVA_HOME=$(/usr/libexec/java_home -v $1)
export PATH=$JAVA_HOME/bin:$PATH
java -version
}
但这仅适用于我的Mac,我想要更清洁的东西,而不必PATH
每次都修改。也许使用chroot
?
如何才能“干净地”更改Java版本-最好仅在已安装的版本之间-并且仅针对当前终端会话?
如果您查看/usr/sbin/update-java-alternatives
,则会看到它会迭代/usr/lib/jvm/.*.jinfo
查找已安装的版本,因此您可以执行相同的操作来检测已安装的版本。
至于PATH
每次都不修改,可以PATH
通过使用内置hash
命令(run help hash
)告诉bash它应为Java使用哪个二进制文件来完全规避。
您可以在以下基础上进行构建:
java_use() {
local file version versions=()
for file in /usr/lib/jvm/.*.jinfo; do
[[ -e $file ]] || continue
version=${file##*/.} version=${version%.jinfo}
versions+=("$version")
done
if (( ${#versions[@]} == 0 )); then
printf >&2 'No java installed\n'
return 1
fi
select version in "${versions[@]}"; do
if [[ -n $version ]]; then
export JAVA_HOME="/usr/lib/jvm/$version"
hash -p "$JAVA_HOME/bin/java" java
break
fi
done
type java
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句