Ubuntu系统中通过Snapcraft安装配置OpenJDK及解决CLI无法直接调用java/javac命令的问题咨询
Ubuntu系统中通过Snapcraft安装配置OpenJDK及解决CLI无法直接调用java/javac命令的问题咨询
嘿,我来给你捋捋这个问题的前因后果和解决办法~
从你贴的终端输出能看出来,你已经通过Snap成功装好了OpenJDK 20.0.1版本,而且用Snap专属的openjdk.java、openjdk.javac命令是能正常运行的,但直接敲java或javac时系统就提示找不到命令。这是因为Snap安装的应用默认会用<软件包名>.<命令>的格式命名可执行文件,目的是避免和系统apt装的同名称命令冲突,所以这些命令不会自动映射到系统默认的java/javac别名上。
下面给你两种简单的解决方法,任选其一就行:
方法一:创建软链接到系统可执行目录
这种方法相当于给Snap的命令创建一个“快捷方式”,让系统能直接识别java/javac:
- 先确认Snap的OpenJDK命令路径:Snap的可执行文件一般都在
/snap/bin/目录下,你可以用ls /snap/bin/openjdk.*查看,能看到openjdk.java和openjdk.javac - 然后创建软链接到
/usr/local/bin(这个目录默认在系统PATH里,不会干扰系统自带的包):sudo ln -s /snap/bin/openjdk.java /usr/local/bin/java sudo ln -s /snap/bin/openjdk.javac /usr/local/bin/javac - 配置完直接在终端输入
java --version和javac --version,就能看到和openjdk.java -version一样的输出了。
方法二:给命令添加别名到shell配置文件
如果你不想修改系统目录,可以通过给shell加别名的方式解决:
- 打开你的shell配置文件(用bash的话是
~/.bashrc,zsh的话是~/.zshrc):nano ~/.bashrc - 在文件末尾加两行别名配置:
alias java='openjdk.java' alias javac='openjdk.javac' - 保存退出后,刷新配置让修改生效:
source ~/.bashrc - 之后新开终端或者刷新配置后,直接敲
java/javac就能调用Snap装的OpenJDK了。
另外补充下,如果你后续要切换不同版本的OpenJDK,Snap的这种命名方式其实更灵活,你可以通过不同的别名或软链接来切换;如果是长期用一个版本,上面两种方法都能完美解决CLI直接调用的问题。
备注:内容来源于stack exchange,提问作者Nicholas Saunders
相关产品推荐
相关产品推荐

