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
我想在我的 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