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

时间:2018-10-02 16:36:30

标签: scala intellij-idea playframework

我想使用来自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项目的依赖项中。我已经尝试过使缓存无效,这无济于事。

1 个答案:

答案 0 :(得分:2)

问题在于,当解决play范围内的JsValue的导入时,Intellij优先考虑将包com.company放入项目,而不是来自框架的包。 / p>

如果您真的想保留com.company.play的名称,可以使用简单的解决方法,使用完全限定的导入,只需添加如下前缀即可:

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