执行sbt compile命令时遭遇系统找不到指定路径的IO异常求助
执行sbt compile命令时遭遇系统找不到指定路径的IO异常求助
看到你碰到这个问题真的闹心,换了好几个Java版本都没解决,先把你的错误信息整理出来:
$ ./sbt compile java.io.IOException: The system cannot find the path specified at java.io.WinNTFileSystem.createFileExclusively(Native Method) at java.io.File.createTempFile(File.java:2063) at java.io.File.createTempFile(File.java:2109) at sbt.StandardMain$$anonfun$initialGlobalLogging$1.apply(Main.scala:68) at sbt.StandardMain$$anonfun$initialGlobalLogging$1.apply(Main.scala:68)
这个错误本质是Java创建临时文件时找不到指定路径,给你几个我踩坑后总结的实用解决思路:
- 先检查系统临时目录状态:Windows默认临时目录是
C:\Users\<你的用户名>\AppData\Local\Temp,你手动去这个路径看看——是不是目录被误删了?或者当前用户有没有读写这个目录的权限?要是目录没了就新建一个,右键给当前用户加上完全控制权限,这招解决过我好几次类似问题。 - 手动指定Java临时目录:如果默认临时目录实在有问题,咱们就换个靠谱的临时路径。执行命令时加上参数指定就行,比如:
注意路径一定要是真实存在、且你有权限的文件夹,别瞎填不存在的路径。./sbt -Djava.io.tmpdir=C:\你确认存在的临时文件夹路径 compile - 排查sbt相关路径的兼容性:看看你的sbt安装目录或者项目路径里有没有中文、空格或者特殊字符?Windows对这种路径兼容性极差,很容易触发找不到路径的问题。有的话把sbt或项目移到纯英文无空格的路径下试试。另外也可以打开sbt的启动脚本(比如Windows下的sbt.bat)看看,有没有硬编码错误的Java路径——虽然你换了Java版本,但说不定脚本还指着旧路径呢。
- 清理sbt缓存试试:有时候缓存文件损坏也会出各种奇奇怪怪的问题,你找到sbt的缓存目录(一般在
%USERPROFILE%\.sbt下面),把里面的文件全删掉,再重新执行sbt compile,让sbt重新生成缓存,说不定就正常了。
内容来源于stack exchange
相关产品推荐
相关产品推荐

