Jenv - 多次添加相同的 java 版本

问题描述 投票:0回答:4

我正在使用 Jenv 来管理我的 MacBook(OS X Yosemite) 上的多个 java 版本。

jenv add /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
oracle64-1.6.0.65 added
1.6.0.65 added
1.6 added

并同时添加 Java 1.8

jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home
oracle64-1.8.0.60 added
1.8.0.60 added
1.8 added

和 jenv 版本显示同一版本的多行,实际上它是一个版本?

jenv versions

    * system (set by /Users/$USERNAME/.jenv/version)
      1.6
      1.6.0.65
      1.8
      1.8.0.60
      oracle64-1.6.0.65
      oracle64-1.8.0.60
java macos jenv
4个回答
2
投票

如果您查看 .jenv 文件夹内部,您可以看到同一版本的所有三个不同实例。


2
投票

您可以随时在

~/.jenv/versions
文件夹中添加/删除/更改别名。这些只是链接。


1
投票

我编写了一个脚本来处理我的 JEnv 环境。

# configure Java  http://www.jenv.be/
# install Java: brew cask install java, brew cask install java7
# set global default: setJavaGlobal 1.7, jenv global 1.7
# set local folder default: jenv local 1.8
# 
JENV_HOME=$HOME/.jenv
export PATH=.:$PATH:$JENV_HOME/bin
eval "$(jenv init -)"
#export JAVA_HOME=$(/usr/libexec/java_home)
export JAVA_HOME="$HOME/.jenv/versions/`jenv version-name`"
alias jenv_set_java_home='export JAVA_HOME="$HOME/.jenv/versions/`jenv version-name`"'
setJavaGlobal() { 
  jenv global $1;
  jenv_set_java_home
  echoJavaSetup
}
setJavaLocal() { 
  jenv local $1;
  jenv_set_java_home
  echoJavaSetup
}
echoJavaSetup() {
  echo --------------------
  echo NEW JAVA SETUP:
  echo "  PATH: $PATH"
  export JAVA_VERSION=`java -version 2>&1 >/dev/null | grep 'java version' | awk '{print $3}'`
  echo "  JAVA: $JAVA_VERSION, $JAVA_HOME"
  jenv versions
  echo --------------------
}
removeJavaLocal() {
  rm -rf ./.java-version
}
showJava() {
  echo --------------------
  echo EXISTING JAVA SETUP:
  echo "  PATH: $PATH"
  export JAVA_VERSION=`java -version 2>&1 >/dev/null | grep 'java version' | awk '{print $3}'`
  echo "  JAVA: $JAVA_VERSION, $JAVA_HOME"
  jenv versions
  if [ -f ./.java-version ]; then
    echo "Using Java LOCAL DEFAULT.  Not using global default!  Run command 'removeJavaLocal' to change to global default."
  fi
  echo --------------------
}

0
投票

这是

jenv
的一个有意的功能,它允许您根据需要的特殊性使用版本,从而允许您使用 Java 的多个主要版本。

要查看所有别名指向的位置,您可以运行

jenv versions --verbose

一般来说,您可能只想指定项目/shell/全局的主要版本(例如 1.8),但也许在一个项目中您需要一个修复 JVM bug 的特定版本(例如 1.8.0.272)。同样,您可以拥有一个想要针对 openjdk 1.8 构建的项目,以及另一个想要针对 corretto 1.8 构建的项目。

如果你想清理更具体的别名,你可以使用如下命令,这样你就只剩下 1.6 和 1.8 了

jenv remove 1.6.0.65 oracle64-1.6.0.65 1.8.0.60 oracle64-1.8.0.60

© www.soinside.com 2019 - 2024. All rights reserved.