2016-09-26 6 views
0

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で簡単に再現可能でなければなりません。

+0

::私は私の外部ライブラリに行く場合は、

import controllers.ClassToImport import play.api._ 

や遊びcontrollersパッケージの名前を変更し、あなたの輸入の順序を変更しよう、という固定するために

プロジェクトを開き、 "com.typesafe.play:play_2.11:2.4.8.jar"と "Open libary settings"を選択してソースを削除すると、問題は解決されます。エディタやコンパイル時にエラーは発生しません。 – Raipe

答えて

0

ここでは、play.apiからすべてをインポートしていて、そこにはcontrollersという名前のパッケージがあります。

controllers.ClassToImportを次のステートメントにインポートしようとすると、それはClassToImportplay.api.controllersのクラスを検索していますが、これは失敗します。新しい情報の一部

import play.api.{controllers => playControllers, _} 
import controllers.ClassToImport 
関連する問題