在 32 位 Raspberry 中将 Java 16 升级到 Java 17
Upgrade Java 16 to Java 17 in 32bit Raspberry
安装最新版本的 Java 总是有点乱,我想看看我是否一切正常。
我目前在这个路径 Java 16 /usr/lib/jvm/adoptopenjdk-16-hotspot-armhf
我遵循了以下教程2) Install OpenJDK 17 on Debian 10/9,一切顺利。
我的JAVA_HOME
是对的,设置为/opt/jdk17
,但是我的java --version
还在用Java16.
java --version
openjdk 16.0.1 2021-04-20
OpenJDK Runtime Environment AdoptOpenJDK-16.0.1+9 (build 16.0.1+9)
OpenJDK Server VM AdoptOpenJDK-16.0.1+9 (build 16.0.1+9, mixed mode)
其他有用信息
pi@raspberrypi:~ $ which java
/usr/bin/java
pi@raspberrypi:~ $ echo $PATH
/home/pi/.local/bin:/bin:/home/pi/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
我的 PATH 变量似乎不包含 /opt/jdk-17
但即使在 运行 source /etc/profile.d/jdk.sh
和 /opt/jdk-17
存在之后, java --version
仍在使用 Java 16.
根据各种评论...
- 您在
/opt/jdk17
中安装了 Java 17 ... 手动 ...
- 您
JAVA_HOME
指向 Java 17 安装的基础。我假设有(例如)一个 /opt/jdk17/bin/java
可执行文件。
- Java 17 安装目录不在命令搜索路径上 (
PATH
)。
- 搜索路径正在查找
/usr/bin/java
... 当您 运行 java -version
. 时(在您的情况下)说 Java 16
- 您的系统安装了“/etc/alternatives”系统,但
sudo update-alternatives --config java
表示只有Java 16可用。
所以...
“替代”机制创建并维护各种可切换命令的符号链接。例如,如果您 运行 ls -l /usr/bin/java
,我希望您会看到它是一个符号链接。当您 运行 update-alternatives
时,它会尝试更新符号链接。但它只能对它知道的命令和命令版本执行此操作。
现在... update-alternatives
不知道 Java 17。它不知道它已安装,也不知道它安装在哪里。
如果您从包管理器安装了 Java 17,那么告诉 update-alternatives
关于 Java 17 的配置文件也会被添加。
解决方案,从“最佳”(1) 到“最差”排序。
删除 Java 17 的手动安装并从包管理器安装它。您可能需要找到/添加一个“实验性”Debian 软件包仓库来执行此操作。 (我的印象是官方的 Debian 回购管理器在挑选新东西方面往往相当缓慢。)
仔细阅读man 1 update-alternatives
和update-alternatives --help
中的文档,然后使用--install
和--slave
命令告诉它关于Java 17.
找到 Java 符号链接并手动将它们替换为指向 Java 17 版本可执行文件的符号链接。 (小心...)
将 /opt/jdk17/bin
添加到 PATH
的开头。 (小心...)
只需使用完整路径名;例如/opt/jdk17/bin/java
而不是 java
.
我也遇到了这个:
Java 17 on the Raspberry Pi 其中包括(除其他外)用于将 Java 17 添加到替代系统的示例命令。它还提到使用 sdkman
.
How to Install Java 17 (JDK 17) on Debian 11。有评论说:
"Awesome! Thanks. This Debian package works on Raspberry Pi's Raspian 64-bit Bullseye as of posting. Only method that works without manually downloading packages and attempting to install. :)".
但是我看到你有一个 32 位 Raspberry Pi ...
安装最新版本的 Java 总是有点乱,我想看看我是否一切正常。
我目前在这个路径 Java 16 /usr/lib/jvm/adoptopenjdk-16-hotspot-armhf
我遵循了以下教程2) Install OpenJDK 17 on Debian 10/9,一切顺利。
我的JAVA_HOME
是对的,设置为/opt/jdk17
,但是我的java --version
还在用Java16.
java --version
openjdk 16.0.1 2021-04-20
OpenJDK Runtime Environment AdoptOpenJDK-16.0.1+9 (build 16.0.1+9)
OpenJDK Server VM AdoptOpenJDK-16.0.1+9 (build 16.0.1+9, mixed mode)
其他有用信息
pi@raspberrypi:~ $ which java
/usr/bin/java
pi@raspberrypi:~ $ echo $PATH
/home/pi/.local/bin:/bin:/home/pi/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
我的 PATH 变量似乎不包含 /opt/jdk-17
但即使在 运行 source /etc/profile.d/jdk.sh
和 /opt/jdk-17
存在之后, java --version
仍在使用 Java 16.
根据各种评论...
- 您在
/opt/jdk17
中安装了 Java 17 ... 手动 ...
- 您
JAVA_HOME
指向 Java 17 安装的基础。我假设有(例如)一个/opt/jdk17/bin/java
可执行文件。 - Java 17 安装目录不在命令搜索路径上 (
PATH
)。 - 搜索路径正在查找
/usr/bin/java
... 当您 运行java -version
. 时(在您的情况下)说 Java 16
- 您的系统安装了“/etc/alternatives”系统,但
sudo update-alternatives --config java
表示只有Java 16可用。
所以...
“替代”机制创建并维护各种可切换命令的符号链接。例如,如果您 运行 ls -l /usr/bin/java
,我希望您会看到它是一个符号链接。当您 运行 update-alternatives
时,它会尝试更新符号链接。但它只能对它知道的命令和命令版本执行此操作。
现在... update-alternatives
不知道 Java 17。它不知道它已安装,也不知道它安装在哪里。
如果您从包管理器安装了 Java 17,那么告诉 update-alternatives
关于 Java 17 的配置文件也会被添加。
解决方案,从“最佳”(1) 到“最差”排序。
删除 Java 17 的手动安装并从包管理器安装它。您可能需要找到/添加一个“实验性”Debian 软件包仓库来执行此操作。 (我的印象是官方的 Debian 回购管理器在挑选新东西方面往往相当缓慢。)
仔细阅读
man 1 update-alternatives
和update-alternatives --help
中的文档,然后使用--install
和--slave
命令告诉它关于Java 17.找到 Java 符号链接并手动将它们替换为指向 Java 17 版本可执行文件的符号链接。 (小心...)
将
/opt/jdk17/bin
添加到PATH
的开头。 (小心...)只需使用完整路径名;例如
/opt/jdk17/bin/java
而不是java
.
我也遇到了这个:
Java 17 on the Raspberry Pi 其中包括(除其他外)用于将 Java 17 添加到替代系统的示例命令。它还提到使用
sdkman
.How to Install Java 17 (JDK 17) on Debian 11。有评论说:
"Awesome! Thanks. This Debian package works on Raspberry Pi's Raspian 64-bit Bullseye as of posting. Only method that works without manually downloading packages and attempting to install. :)".
但是我看到你有一个 32 位 Raspberry Pi ...