Ubuntu系统Spring Tool Suite 4安装Lombok遇权限及Java命令问题
解决Ubuntu下用SDKMAN管理Java时,sudo执行Lombok安装命令找不到java的问题
我来帮你搞定这个问题!核心原因很简单:SDKMAN是给当前用户配置的Java环境变量,但sudo执行命令时会切换到root用户,root的环境变量里并没有SDKMAN设置的Java路径,所以才会报错sudo: java: command not found。下面给你几个实用的解决办法:
方法1:使用Java的绝对路径执行
先找到你当前用户下SDKMAN管理的Java绝对路径,执行这个命令:
which java
你会得到类似这样的输出:/home/你的用户名/.sdkman/candidates/java/current/bin/java
然后用这个绝对路径替换java,加上sudo运行Lombok:
sudo /home/你的用户名/.sdkman/candidates/java/current/bin/java -jar lombok.jar
记得把路径里的「你的用户名」换成你实际的用户名哦。
方法2:让sudo继承当前用户的环境变量
sudo有个-E参数,可以保留当前用户的环境变量,这样就能直接找到SDKMAN配置的Java了,命令很简单:
sudo -E java -jar lombok.jar
这种方式最快捷,大部分场景下都能用,不需要折腾路径。
方法3:给root用户配置SDKMAN环境(适合频繁使用的场景)
如果经常需要用sudo执行Java相关命令,可以把当前用户的SDKMAN配置同步到root用户:
- 切换到root用户:
sudo su - 编辑root的bash配置文件:
nano ~/.bashrc - 把你当前用户
~/.bashrc里的SDKMAN初始化内容复制进去,一般是这段:export SDKMAN_DIR="$HOME/.sdkman" [[ -s "$SDKMAN_DIR/bin/sdkman-init.sh" ]] && source "$SDKMAN_DIR/bin/sdkman-init.sh" - 保存退出后,执行
source ~/.bashrc让配置生效 - 退出root用户,之后再用
sudo java就能正常执行了
安装Lombok的后续步骤
不管用哪种方法启动Lombok安装程序后,在弹出的界面里:
- 点击「Specify Location」,找到/opt目录下的STS4安装路径,选中STS4的启动器(比如
SpringToolSuite4) - 点击「Install/Update」完成安装
- 重启STS4,就可以正常使用Lombok的注解了
内容的提问来源于stack exchange,提问作者Clauber Martins
相关产品推荐
相关产品推荐

