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



我想使用typesafe中的play-json在我的core项目的根目录中创建一个帮助程序类,如下所示

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行错误地告诉我"无法解析符号api",当Ctrl + 单击play时,它会转到包含我的Foo.scala文件的文件夹

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

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

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

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

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

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

相关内容

最新更新