IntelliJ 2018.1.4中sbt Shell与sbt Console运行差异求助
解决IntelliJ 2018.1.4中sbt Shell启动报错的问题
问题根源
咱们先拆解下这个报错的核心原因:
当你使用IntelliJ自带的sbt Shell或者点击绿色运行箭头时,IDE会自动给你的sbt项目添加两个它内部依赖的插件——org.jetbrains#sbt-structure-extractor和org.jetbrains#sbt-idea-shell,这俩是IntelliJ用来解析项目结构、实现与sbt交互的工具。
但你的IDE版本是2018.1.4,插件却试图拉取2017.2版本的包,这个版本的依赖要么已经从公共仓库下架,要么和当前IDE版本不兼容,所以才出现了依赖找不到的错误。
而你用sbt Console的时候,是直接调用本地独立的sbt环境,完全不会加载IntelliJ的这些额外插件,所以项目能正常编译运行。
解决办法
给你几个可行的修复方案:
- 更新sbt插件:打开IntelliJ的
Settings -> Plugins,找到sbt插件,检查是否有可用更新,把它升级到和你IDE版本匹配的2018.1.x系列版本。 - 手动指定插件版本:在项目的
project/plugins.sbt文件中,手动添加对应IDE版本的插件依赖,示例代码如下:addSbtPlugin("org.jetbrains" % "sbt-structure-extractor" % "2018.1.4") addSbtPlugin("org.jetbrains" % "sbt-idea-shell" % "2018.1.4") - 禁用IDE的sbt Shell:进入
Settings -> Build, Execution, Deployment -> Build Tools -> sbt,将Use sbt shell for build and import设置为禁用,这样IDE会直接调用你本地的sbt环境,不会额外添加那些有问题的依赖。
结果以哪个为准?
肯定是以sbt Console的结果为准!因为它反映的是你的项目在标准sbt环境下的真实运行状态,没有IDE插件的干扰。sbt Shell的报错只是IDE集成层面的问题,并非你的项目代码或依赖本身存在错误。
内容的提问来源于stack exchange,提问作者uniXVanXcel
相关产品推荐
相关产品推荐

