IntelliJ IDEA Scala 检查:导入 play.api.xxx 与 com.company.play 包冲突

IntelliJ IDEA Scala inspection : import play.api.xxx conflict with com.company.play package

我想在我的 core 项目的根目录下使用类型安全的 play-json 创建一个助手 class,例如

package com.company

import play.api.libs.json.JsValue

object Helper {

  implicit class RichJson(json: JsValue) {
    def doStuff() //...
  }
} 

问题是我在项目的其他地方有一个包com.company.play

package com.company.play

class Foo() { //... 
}

在 IntelliJ IDEA 2018.2.4 CE 中,import play.api.libs.json.JsValue 行错误地告诉我 "cannot resolve symbol api",当 Ctrl+单击 play 时,它会转到包含我的文件夹Foo.scala 文件

如果我在IDEA之外用sbt编译解决方案,没有问题。

如果我把Helper对象放在一个子包中(例如com.company.common)没有错误(这也意味着我的build.sbt中的依赖是正确的)

我不明白为什么 IDEA 会错过这个,com.company.play 甚至不在 core 项目的依赖项中。我已经尝试过使缓存无效,但没有用。

问题是 Intellij 在 com.company 范围内解析 JsValue 的导入时优先将包 play 放入您的项目,而不是来自框架的包.

如果您真的想为 com.company.play 保留该名称,有一个简单的解决方法,使用完全限定的导入,只需像这样的前缀:

import _root_.play.api.libs.json.JsValue