我想使用来自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
项目的依赖项中。我已经尝试过使缓存无效,这无济于事。
答案 0 :(得分:2)
问题在于,当解决play
范围内的JsValue
的导入时,Intellij优先考虑将包com.company
放入项目,而不是来自框架的包。 / p>
如果您真的想保留com.company.play
的名称,可以使用简单的解决方法,使用完全限定的导入,只需添加如下前缀即可:
import _root_.play.api.libs.json.JsValue