代码之家  ›  专栏  ›  技术社区  ›  JR Utily

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

  •  1
  • JR Utily  · 技术社区  · 7 年前

    我想在我的 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 )没有错误(这也意味着依赖关系在my build.sbt中是正确的)

    我不明白为什么我会错过这个, com.company.play 甚至不在 核心

    1 回复  |  直到 7 年前
        1
  •  2
  •   Bilk    7 年前

    问题是Intellij优先于包 play 而不是来自框架的包 JsValue 里面 com.company

    如果你真的想保留这个名字 com.company.play ,有一个使用完全限定导入的简单解决方法,如下所示:

    import _root_.play.api.libs.json.JsValue
    
    推荐文章