我用 安装了 openjdk sudo snap install openjdk
,我想设置在终端中JAVA_HOME
启用java
相关命令,但是不起作用。
我尝试了以下操作:
java_home.sh
创建一个包含/etc/profile.d
内容的脚本JAVA_HOME=/snap/openjdk/current/jdk
并执行注销/登录,但它不起作用java_home.sh
创建一个包含/etc/profile.d
内容的脚本source $(openjdk)
并执行注销/登录,但它不起作用- 添加并
JAVA_HOME=/snap/openjdk/current/jdk export PATH=$PATH:$JAVA_HOME
打开~/.bashrc
新终端,但它仍然不起作用
我不知道该尝试什么,或者该做什么,所以如果有人能帮忙,我将不胜感激。
的输出ls /snap/openjdk
是909 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。