VirtualBox共享文件夹中SBT启动Play框架出现Operation not permitted错误如何解决
解决方案
你之前尝试的
-Dsbt.server.forcestart=true参数仅用于强制启动新的SBT服务实例,不会修改套接字文件的生成路径,因此无法解决共享文件夹的权限限制问题。
方案1:修改SBT服务器套接字存放路径(优先推荐,同时解决报错和跳过确认)
SBT默认会在项目根目录的project/target路径下创建IPC套接字文件,而VirtualBox共享文件夹不支持Unix域套接字的特殊权限配置,你可以通过启动参数指定SBT服务器目录到本机非共享路径(比如当前用户的临时目录),绕开共享文件夹限制:
sbt -Dsbt.server.directory=/tmp/sbt-servers run
如果要永久生效,直接在项目根目录的.jvmopts文件中添加一行配置即可,后续执行SBT命令不需要额外加参数:
-Dsbt.server.directory=/tmp/sbt-servers
方案2:完全禁用SBT服务器功能
如果你不需要用到SBT的服务器模式(多终端共享同一个SBT会话的能力),可以直接关闭该功能,从根源上避免创建套接字的操作:
sbt -Dsbt.server.autostart=false run
同样可以把-Dsbt.server.autostart=false写入项目的.jvmopts文件实现永久生效。
方案3:强制自动确认提示(兼容兜底方案)
如果因为项目约束不能调整SBT服务器配置,可以通过管道自动输入默认选项跳过手动确认:
- Unix类系统执行命令:
echo y | sbt run
- Windows cmd执行命令:
echo y | sbt run
- Windows PowerShell执行命令:
"y" | sbt run
内容的提问来源于stack exchange,提问作者Jonio
相关产品推荐
相关产品推荐

