Проверка IntelliJ IDEA Scala: конфликт импорта play.api.xxx с пакетом com.company.play - PullRequest
0 голосов
/ 02 октября 2018

Я хочу создать вспомогательный класс в корне моего core проекта, используя play-json от typesafe, что-то вроде

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 + Click на play, этоидет в папку с моим файлом Foo.scala

Если я скомпилирую решение с помощью sbt за пределами IDEA, проблем не будет.

Если поместить объект Helper в подпакет (например, com.company.common) нет ошибки (это также означает, что в моем билде правильная зависимость)

Я не понимаю, почему IDEA это пропускает, com.company.play даже не в зависимостяхcore проект.Я уже пытался сделать кеш недействительным, но это не помогло.

1 Ответ

0 голосов
/ 03 октября 2018

Проблема в том, что Intellij отдает приоритет пакету play в вашем проекте, а не пакету, выходящему из фреймворка, при разрешении импорта JsValue из области действия com.company.

Есливы действительно хотите сохранить это имя для com.company.play, есть простой обходной путь, использующий полностью квалифицированный импорт, просто префикс, подобный этому:

import _root_.play.api.libs.json.JsValue
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...