【发布时间】:2021-03-26 16:31:08
【问题描述】:
我刚买了一台带有 M1 处理器的 mac mini,我觉得这种行为很奇怪。基本上,在运行/usr/libexec/java_home -v ## 时,我可以看到只有第一次找到并替换了JDK 路径。如果我第二次运行它,即使带有 -V 标志,我看到它找到了正确的 JDK 路径,但它永远不会替换旧路径,实际上使整个事情变得陈旧。
知道为什么吗?这是取自我的终端的示例。
lda@Lucios-Mac-mini ~ % /usr/libexec/java_home -V
Matching Java Virtual Machines (3):
15 (x86_64) "AdoptOpenJDK" - "AdoptOpenJDK 15" /Library/Java/JavaVirtualMachines/adoptopenjdk-15.jdk/Contents/Home
13.0.5.1 (arm64) "Azul Systems, Inc." - "Zulu 13.35.1017" /Library/Java/JavaVirtualMachines/zulu-13.jdk/Contents/Home
11.0.9.1 (arm64) "Azul Systems, Inc." - "Zulu 11.43.1015" /Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/adoptopenjdk-15.jdk/Contents/Home
lda@Lucios-Mac-mini ~ % java --version
openjdk 15 2020-09-15
OpenJDK Runtime Environment AdoptOpenJDK (build 15+36)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 15+36, mixed mode, sharing)
lda@Lucios-Mac-mini ~ % export JAVA_HOME=$(/usr/libexec/java_home -v11)
lda@Lucios-Mac-mini ~ % java --version
openjdk 11.0.9.1 2020-11-04 LTS
OpenJDK Runtime Environment Zulu11.43+1015-CA (build 11.0.9.1+1-LTS)
OpenJDK 64-Bit Server VM Zulu11.43+1015-CA (build 11.0.9.1+1-LTS, mixed mode)
lda@Lucios-Mac-mini ~ % export JAVA_HOME=$(/usr/libexec/java_home -v15)
lda@Lucios-Mac-mini ~ % java --version
openjdk 11.0.9.1 2020-11-04 LTS
OpenJDK Runtime Environment Zulu11.43+1015-CA (build 11.0.9.1+1-LTS)
OpenJDK 64-Bit Server VM Zulu11.43+1015-CA (build 11.0.9.1+1-LTS, mixed mode)
lda@Lucios-Mac-mini ~ % export JAVA_HOME=$(/usr/libexec/java_home -v13)
lda@Lucios-Mac-mini ~ % java --version
openjdk 11.0.9.1 2020-11-04 LTS
OpenJDK Runtime Environment Zulu11.43+1015-CA (build 11.0.9.1+1-LTS)
OpenJDK 64-Bit Server VM Zulu11.43+1015-CA (build 11.0.9.1+1-LTS, mixed mode)
【问题讨论】:
-
/usr/libexec/java_home -v15打印什么?如果它不打印任何内容,您需要弄清楚是什么让java_home打印到版本 15 的路径。 -
v15 也是 x86 而不是 arm...
-
即使我在 11 和 13 之间尝试,我也会得到相同的结果。无论如何,当您的脚本与所有 3 个版本一起使用时,输出看起来正确:
/usr/libexec/java_home -v15 -> /Library/Java/JavaVirtualMachines/adoptopenjdk-15.jdk/Contents/Home /usr/libexec/java_home -v13 -> /Library/Java/JavaVirtualMachines/zulu-13.jdk/Contents/Home /usr/libexec/java_home -v11 -> /Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home -
对,所以只要我将
/usr/libexec/java_home -v##的输出绑定到 JAVA_HOME 变量,它就再也不会改变了。我猜为什么我不能多次覆盖 JAVA_HOME?
标签: java bash macos path java-home