【问题标题】:Automatically Setting JAVA_HOME to latest JDK version自动将 JAVA_HOME 设置为最新的 JDK 版本
【发布时间】:2018-07-25 19:52:23
【问题描述】:

我需要将 JAVA_HOME 设置为 64_bit 文件夹中的最新 JDK 版本。 目前,我将其设置为: export JAVA_HOME=/opt/java/hotspot/8/64_bit/jdk1.8.0_172

那么有什么方法可以自动获取最新的 JDK 版本,因为每次我需要在新版本到来时更改脚本。

谢谢

【问题讨论】:

  • 据我所知,没有自动的方法可以做到这一点。
  • 如果你知道所有的 jdks 都将安装在/opt/java/hotspot/8/64_bit/ 中,那么你可能会通过几行 shell 脚本找到最新版本。或者,创建一个始终指向最新版本的符号链接。
  • 在 Mac 上,这可以通过 export JAVA_HOME=$(/usr/libexec/java_home) 完成,并且该目录由安装程序更新。
  • 谢谢@afrischke... 工作正常。 cd /opt/java/hotspot/8/64_bit var1="$(ls -t1 | head -n 1)" echo "${var1}" export JAVA_HOME=/opt/java/hotspot/8/64_bit/"${ var1}" echo $JAVA_HOME /opt/java/hotspot/8/64_bit/jdk1.8.0_172
  • @FullStackDeveloper 希望这会有所帮助:)

标签: java java-home


【解决方案1】:

它可以在几行 shell 脚本中完成。可能有无数种方法可以实现这一点。以下代码依赖sort-V 标志来查找最新版本。

#!/bin/sh
BASE_DIR=/opt/java/hotspot/8/64_bit/

version=$(ls $BASE_DIR | grep -Eo "([0-9]+\.?){3}(_[0-9]+)?" | sort -Vr | head -1)

if [ -n "$version" ]; then
  folder=$(find $BASE_DIR -maxdepth 1 -name "*${version}*")
  echo "Setting JAVA_HOME to $folder."
  JAVA_HOME="$folder"
  export JAVA_HOME
else
  echo 1>&2 "No JDK installation found in ${BASE_DIR}!"
  exit 1
fi

【讨论】:

    【解决方案2】:

    为 openjdk 自动设置 JAVA_HOME

    设置java版本:

    sudo update-alternatives --config java
    update-java-alternatives --list
    update-java-alternatives --set /usr/lib/jvm/java-1.11.0-openjdk-amd64
    

    自动设置 JAVA_HOME

    export JAVA_HOME=$(update-alternatives --display java | grep -e "link currently points to" | sed 's/\  link currently points to //' | sed 's/\/bin\/java/\/jre/g')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-30
      • 2016-04-12
      • 2022-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-16
      • 1970-01-01
      相关资源
      最近更新 更多