升级sbt后IntelliJ导入项目遇/tmp目录执行限制报错求助
解决sbt升级后IntelliJ导入失败(/tmp禁止执行)的问题
这问题我之前帮好几个开发者排查过,咱们一步步来搞定它:
1. 优先检查IntelliJ中sbt的专属VM参数
有时候全局JVM参数不一定能覆盖IDE里sbt插件的独立配置,得单独设置:
- 打开IntelliJ的设置(Windows/Linux:
File > Settings;Mac:IntelliJ IDEA > Settings),找到Build, Execution, Deployment > Build Tools > sbt - 在VM parameters输入框里直接添加:
-Djava.io.tmpdir=/path/to/your/custom/tmp(替换成你确认可用的目录) - 点击
Apply和OK,重启IntelliJ后重新尝试导入项目
2. 修改sbt全局配置文件
sbt本身的启动配置可能会忽略IDE的参数,得给sbt单独指定临时目录:
- 找到sbt的全局配置目录(一般是
~/.sbt/1.0/,对应你的sbt版本),编辑或新建global.sbt文件,添加一行:javaOptions += "-Djava.io.tmpdir=/path/to/your/custom/tmp" - 另外,新建或编辑
~/.sbtopts文件(没有就直接创建),加入:
这个文件的参数会在sbt启动时自动加载,不管是IDE里运行还是命令行执行sbt命令-Djava.io.tmpdir=/path/to/your/custom/tmp
3. 确保系统环境变量生效
你设置的JAVA_OPTS可能没真正生效,先验证再调整:
- 打开终端,执行
echo $JAVA_OPTS,看看输出里有没有你设置的-Djava.io.tmpdir参数- 如果没有,Linux/Mac用户可以在
~/.bashrc或~/.zshrc里添加:export JAVA_OPTS="-Djava.io.tmpdir=/path/to/your/custom/tmp",然后执行source ~/.bashrc(对应你的shell) - Windows用户右键「此电脑」→「属性」→「高级系统设置」→「环境变量」,新建系统变量
JAVA_OPTS,值填对应的参数,然后重启电脑和IDE
- 如果没有,Linux/Mac用户可以在
4. 清空IntelliJ缓存(常见坑点)
IDE缓存可能残留了旧的临时目录配置,导致新参数不生效:
- 点击
File > Invalidate Caches...,选择Invalidate and Restart,让IDE彻底清空缓存后重启,再尝试导入项目
5. 验证临时目录是否生效
可以写个简单的测试代码确认参数是否真的被应用:
object TestTmpDir extends App { println("当前临时目录:" + System.getProperty("java.io.tmpdir")) }
运行这个程序,如果输出是你设置的自定义目录,说明参数已经生效,sbt导入问题应该就能解决了
内容的提问来源于stack exchange,提问作者user3182701
相关产品推荐
相关产品推荐

