【问题标题】:IntelliJ IDEA Scala inspection : import play.api.xxx conflict with com.company.play packageIntelliJ IDEA Scala 检查:import play.api.xxx 与 com.company.play 包冲突
【发布时间】:2019-03-07 20:05:47
【问题描述】:

我想使用 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 项目的依赖项中。我已经尝试过使缓存无效,但没有帮助。

【问题讨论】:

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

标签: scala intellij-idea playframework


【解决方案1】:

问题是,在解决 JsValuecom.company 范围内的导入时,Intellij 优先将包 play 放入您的项目中,而不是来自框架的包。

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

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

【讨论】:

    猜你喜欢
    • 2017-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-24
    • 1970-01-01
    • 2015-01-13
    • 1970-01-01
    相关资源
    最近更新 更多