我想使用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