使用 snap 安装 opendjk 后无法设置 JAVA_HOME

使用 snap 安装 opendjk 后无法设置 JAVA_HOME

我用 安装了 openjdk sudo snap install openjdk,我想设置在终端中JAVA_HOME启用java相关命令,但是不起作用。

我尝试了以下操作:

  1. java_home.sh创建一个包含/etc/profile.d内容的脚本JAVA_HOME=/snap/openjdk/current/jdk并执行注销/登录,但它不起作用
  2. java_home.sh创建一个包含/etc/profile.d内容的脚本source $(openjdk)并执行注销/登录,但它不起作用
  3. 添加并JAVA_HOME=/snap/openjdk/current/jdk export PATH=$PATH:$JAVA_HOME打开~/.bashrc新终端,但它仍然不起作用

我不知道该尝试什么,或者该做什么,所以如果有人能帮忙,我将不胜感激。

的输出ls /snap/openjdk909 current

的输出cat $(openjdk)为:

# Source this file for OpenJDK environment variables and aliases
export JAVA_HOME=/snap/openjdk/909/jdk
export MANPATH=/snap/openjdk/909/jdk/man:
alias java='openjdk.java'
alias javac='openjdk.javac'
alias javadoc='openjdk.javadoc'
alias jar='openjdk.jar'
alias jarsigner='openjdk.jarsigner'
alias jlink='openjdk.jlink'
alias jpackage='openjdk.jpackage'
alias jwebserver='openjdk.jwebserver'

当执行时source openjdk,它开始工作,但我不想每次都这样做,而是希望它作为环境变量在任何地方加载。

答案1

在脚本之家找到了解决方案


sudo snap install openjdk

openjdk 

//generate .env
// in my case /var/snap/openjdk/1005/openjdk.env

/**
# Source this file for OpenJDK environment variables and aliases
export JAVA_HOME=/snap/openjdk/1005/jdk
export MANPATH=/snap/openjdk/1005/jdk/man:
alias java='openjdk.java'
alias javac='openjdk.javac'
alias javadoc='openjdk.javadoc'
alias jar='openjdk.jar'
alias jarsigner='openjdk.jarsigner'
alias jlink='openjdk.jlink'
alias jpackage='openjdk.jpackage'
alias jwebserver='openjdk.jwebserver'
*/

add .env in to file /etc/profile 

source /etc/profile

java --version

openjdk 18.0.2 2022-07-19
OpenJDK Runtime Environment (build 18.0.2+9-snap)
OpenJDK 64-Bit Server VM (build 18.0.2+9-snap, mixed mode, sharing)

https://developpaper.com/linux-system-uses-snap-to-install-jdk/

答案2

操作系统查找 java 所需的一切都在/snap/openjdk/909/snap/openjdk/current目录中,它只需要正确的路径。

因此,问题的答案是:

java_home.sh/etc/profile.d/sh 中创建并添加:

export JAVA_HOME=/snap/openjdk/909/jdk
export PATH=$PATH:$JAVA_HOME/bin

登录/注销即可java --version工作。

答案3

更好的方法是将 /var/snap/openjdk/current/openjdk.env 'source' 到 /etc/bash.bashrc。由于您可以使用 sudo,我假设您可以使用 nano 编辑它。

sudo nano /etc/bash.bashrc

然后,在文件底部输入以下代码来获取 env 文件:

source /var/snap/openjdk/current/openjdk.env 

使用“current”而不是版本号是一种很好的做法。将来,如果您更新 OpenJDK,该“current”仍将有效。此外,无需注销或重新启动。任何新打开的终端或依赖 bashrc 的应用程序都将获得别名和导出。

注意:如果您希望仅对您的帐户可见,您可以选择编辑 ~/.bashrc,而不是编辑 /etc/bash.bashrc。

相关内容