【问题标题】:What should I set JAVA_HOME to using multiple jdks?我应该如何设置 JAVA_HOME 以使用多个 jdks?
【发布时间】:2021-10-17 09:22:41
【问题描述】:

我想在 Linux 上在下面的 jdks 之间切换(使用 update-java-alternatives):

java-1.11.0-openjdk-amd64      1111       /usr/lib/jvm/java-1.11.0-openjdk-amd64
java-16-oracle                 1091       /usr/lib/jvm/java-16-oracle
java-1.8.0-openjdk-amd64       1081       /usr/lib/jvm/java-1.8.0-openjdk-amd64

我应该将我的 JAVA_HOME 设置为什么? update-java-alternatives 是否可以设置 JAVA_HOME?

【问题讨论】:

标签: java linux java-home


【解决方案1】:

我建议使用 https://sdkman.io/ 之类的东西 - 它允许您下载并在各种版本的 JDK 之间轻松切换。

在环境和结果之间切换的命令示例:

➜ echo $JAVA_HOME
/home/pdys/.sdkman/candidates/java/current

~ 
➜ java -version
openjdk version "16.0.1" 2021-04-20
OpenJDK Runtime Environment AdoptOpenJDK-16.0.1+9 (build 16.0.1+9)
OpenJDK 64-Bit Server VM AdoptOpenJDK-16.0.1+9 (build 16.0.1+9, mixed     mode, sharing)

~ 
➜ sdk use java 8.0.242.hs-adpt

Using java version 8.0.242.hs-adpt in this shell.

~ 
➜ java -version               
openjdk version "1.8.0_242"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_242-b08)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.242-b08, mixed mode)

~ 
➜ echo $JAVA_HOME             
/home/pdys/.sdkman/candidates/java/8.0.242.hs-adpt

【讨论】:

    【解决方案2】:

    我应该将我的 JAVA_HOME 设置为什么?

    分别:

       export JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64
    
       export JAVA_HOME=/usr/lib/jvm/java-16-oracle
    
       export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
    

    update-java-alternatives 是否可以设置 JAVA_HOME?

    没有。不是。

    update-java-alternatives 的目的是创建/维护/usr/bin 等中的符号链接,这些链接决定了“全局”设置是什么。 JAVA_HOME 环境变量用于每个用户/每个脚本(或每个会话)配置。它们是正交的。

    我猜你可以编写一个 shell 函数,将 JAVA_HOME 设置为(比如说)与 /usr/bin/java 当前解析的任何内容相对应的 Java 安装。

    【讨论】:

      猜你喜欢
      • 2015-08-07
      • 2019-11-28
      • 2010-12-14
      • 2011-09-04
      • 1970-01-01
      • 2014-05-08
      • 2010-11-23
      • 2011-04-13
      相关资源
      最近更新 更多