首页 > 解决方案 > Sbt 没有从当前目录加载项目

问题描述

当我在包含build.sbt文件的 Scala 项目中运行 SBT 时,SBT 似乎忽略它并从不同的文件夹加载项目定义并将当前项目设置到不同的目录hsperfdata,这很奇怪,因为它被用作 Java 性能计数器的一部分与我正在尝试做的事情无关。

SBT 也是通过 SDKMAN 安装的,当我尝试指定较低的 SDK 版本1.2.8而不是1.4.6时,它将始终使用1.4.6。我的文件中也指定了1.2.8版本。build.properties

我的堆栈跟踪:

xxxxx@MC-N369748 topic-api % sbt 
OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0
[info] welcome to sbt 1.4.6 (AdoptOpenJDK Java 1.8.0_275)
[info] loading project definition from /private/var/folders/hs/0vkhntfd557c8z8g8b_p7ly00000gp/T/hsperfdata_adu-tp01/project
[info] set current project to hsperfdata_adu-tp01 (in build file:/private/var/folders/hs/0vkhntfd557c8z8g8b_p7ly00000gp/T/hsperfdata_adu-tp01/)
[info] sbt server started at local:///Users/xxxxx/.sbt/1.0/server/143baa47709c908603e6/sock
[info] started sbt server
sbt:hsperfdata_xxxxx> 

标签: scalasbtsdkman

解决方案


当我们遇到这个问题时,它是由 OS X 限制 java 可执行文件的权限引起的。由于进程无法读取/写入当前目录,sbt 转移到 tmp 文件夹。

在 System Preferences => Security & Privacy 中,确保为适当的可执行文件(在这种情况下可能是 java 和 javac)打开了 Full Disk Access 属性,或者将源代码移到 OS X 认为文件系统的受保护部分中(我们将构建从用户主目录移动到 /code 并且 sbt 工作正常)。


推荐阅读