IntelliJ + Scala(+ Play)は同時に2つの新しいものから始めます。IntelliJ:importing play.api._は他のインポートを中断します
同じクラスのplay.api._をインポートすると、エディタでIntelliJのエラー報告に奇妙な問題が発生します。プロジェクトは、IntelliJ scala + play 2.4テンプレートで作成された新しいプロジェクトです。
例は、アプリ/コントローラ/サブパッケージにImportError.scalaファイル:
IntelliJのエディタは "輸入controllers.ClassToImport" 行に私にエラーを引けるです: "シンボルClassToImportを解決できません"
の場合
このようにplay.apiインポートを削除してクラスを変更すると、
というクラスが変更された場合は、「再インポートImportError.scala」を選択します。package controllers.subpackage
import controllers.ClassToImport
class ImportError {
val instance = new ClassToImport()
}
その後、IntelliJはエディタでエラーを表示しなくなりました。また、ここで
は、状況の他の観測結果は次のとおりです。「インポートcontrollers.ClassToImport」と「輸入プレイ:
- 私は場合はプレイインポートする前に、後者のインポートをカット&ペースト、IntelliJのはに私の輸入を変更します。 api。{コントローラー、_} 'なので、ここで何か手掛かりになるはずです。なぜ私はコントローラがAPIを再生することを望んでいると思いますか?
- 2つのインポートの順序を変更すると、エディタとコンパイル結果の両方がうまくいきます。
- "import play.api.controllers"に再生インポートを変更すると、エディタは満足できますが、コンパイル結果は "object controllers is package.playi.apiのメンバーではありません"です。私はこれを全く理解していませんが、私の理解(エラーで示されているように)にはplay.api.controllersは存在しません。なぜIntelliJエディタはそれを受け入れていますか?
上記の例は、私が実際のプロジェクトでIntelliJでplay.api._をインポートする際に直面している問題の独立した例です。最新のIntelliJ IDEAコミュニティ2016.2.4で簡単に再現可能でなければなりません。
::私は私の外部ライブラリに行く場合は、
や遊び
controllers
パッケージの名前を変更し、あなたの輸入の順序を変更しよう、という固定するためにプロジェクトを開き、 "com.typesafe.play:play_2.11:2.4.8.jar"と "Open libary settings"を選択してソースを削除すると、問題は解決されます。エディタやコンパイル時にエラーは発生しません。 – Raipe