2017-03-02 15 views
1

IDEAおよびsbtのJava immutablesライブラリを使用すると、コンパイルと実行コードはうまく動作しますが、エディタは "Can not resolve symbol ..."と "Can not resolve method ..."生成されたクラスを使用するときのエラー。intelliJ IDEAでsbtを使用するimmutablesのサポート

次に、the documentation for setting up IDEsはMavenでうまく動作しますが、sbtの問題は解決しません。

sbtを使用してIDEA上で生成されたソースに対してエディタのサポートとコード補完を行うにはどうすればよいですか?

答えて

1

まず、the documentationの手順に従ってください。

IntelliJ IDEAで注釈処理を設定するには、ダイアログの環境設定>プロジェクト設定>コンパイラ>注釈プロセッサを使用します。

次に、問題は、sbtが生成されたソースファイルをtarget/scala-2.n/classes/our/packageに入れていることです。これはコンパイルされた.classファイルのためのディレクトリなので、ソースを他の場所で生成する必要があります。編集IDEAの設定は、ここで私たちを助けにはなりませんので、我々は次のように追加することでbuild.sbtを編集する必要があります。

// tell sbt (and by extension IDEA) that there is source code in target/generated_sources 
managedSourceDirectories in Compile += baseDirectory.value/"target"/"generated_sources" 
// before compilation happens, create the target/generated_sources directory 
compile in Compile <<= (compile in Compile).dependsOn(Def.task({ 
    (baseDirectory.value/"target"/"generated_sources").mkdirs() 
})) 
// tell the java compiler to output generated source files to target/generated_sources 
javacOptions in Compile ++= Seq("-s", "target/generated_sources") 

は最後に、私たちはそのディレクトリに除外を除去することで、target/ではないすべてが無視されるべきであるという考えを伝える必要があります。ファイル>プロジェクトの構造>プロジェクト設定>モジュールの順に進み、targetディレクトリをクリックし、[除外]を選択解除します。または、[プロジェクト]タブの[target]ディレクトリを右クリックし、[ディレクトリをマークする]> [除外をキャンセル]を右クリックします。

この時点で、エディタのサポートが有効になっているはずです。そうでない場合は、sbt clean compileを実行して、ソースが生成されたことを確認してください。

+1

"まず、ドキュメントの指示に従ってください。"あなたの答えに本質的な詳細を含めて、リンクが消えても答えが役立つようにしてください。 –

関連する問題