Sbt命令执行失败:IOException与Security Manager报错求助
解决sbt命令执行报错的方案
一、处理java.io.IOException: No such file or directory报错
这个错误核心是sbt无法创建所需文件/目录,大概率是权限问题,按以下步骤排查:
- 检查项目目录权限:执行
ls -ld .查看当前项目目录的所有者和权限,确保当前用户拥有读写权限。如果目录是root用户创建的,执行sudo chown -R $USER:$USER /path/to/your/project(替换为你的项目路径)修改所有者。 - 检查sbt缓存目录权限:执行
ls -ld ~/.sbt,如果缓存目录属于root或当前用户无读写权限,执行sudo chown -R $USER:$USER ~/.sbt修复。 - 确认JAVA_HOME生效:执行
echo $JAVA_HOME确认路径正确,再执行$JAVA_HOME/bin/java -version验证确实是JDK 8版本。
二、处理sudo sbt引发的Security Manager is deprecated报错
- 绝对不要用sudo运行sbt:sudo会重置环境变量,导致实际使用的JDK不是你配置的JDK 8(可能是系统默认的高版本JDK),而高版本JDK已移除Security Manager,旧版sbt依赖该功能所以报错。
- 若之前用sudo运行过sbt,需修复缓存目录权限:执行
sudo chown -R $USER:$USER ~/.sbt,避免后续普通用户运行sbt时再次出现权限问题。
内容的提问来源于stack exchange,提问作者Maniyan
相关产品推荐
相关产品推荐

