web-dev-qa-db-ja.com

scalaでプロジェクトを再生scala ide

Play 2.3.7でplayプロジェクトを作成しました

プロジェクトディレクトリでアクティベーターを実行し、Eclipseコマンドを実行してEclipseプロジェクトファイルを生成しました。

Eclipseに行くと(Scala IDE typesafe Build id:4.0.0-vfinal-20150119-1023-Typesafeを使用しています。私のApplication.scalaファイルのエラー:

object index is not a member of package views.html

私のセットアップに何か問題がありますか?アクティベーションコンソールプロンプトでrunを実行すると、アプリは正常に動作します。

ありがとう!

編集:追加されたコード

package controllers

import play.api._
import play.api.mvc._

object Application extends Controller {

  def index = Action {
    Ok(views.html.index("Your new application is ready."))
  }

} 

エラーは「OK」行にあります。

Index.scala.htmlというビューにファイルがあり、アクティベーターから実行するとアプリがファイルを実行します。

33
user384842

Play 2.4.xでビューを追加した後、IntelliJ IDEAが時々混乱し、ビルドを絶対に拒否します。プロジェクトの再構築でさえ失敗します:

enter image description here

これはIDEA 15で時々発生します。そして、その場合、コマンドラインは最も迅速で信頼性の高い修正を提供します。

sbt clean; sbtコンパイル

それでおしまい! IDEAはプロジェクトを期待どおりにコンパイルします。

更新:

まれに、sbt compileコマンドラインで正常に完了しましたが、IntelliJ IDEA 15は同じ「オブジェクトxはメンバーではありません」というエラーを引き続き表示し、IDEAの混乱を解決しました。

ファイルメニュー:

enter image description here

25
Brent Faust

他の解決策はうまくいきませんでした。いくつかのエラーが表示されたり、[問題]タブがクリアされたりしますが、views.html.indexの下に赤い波線が残り、scala.htmlテンプレートではオートコンプリートが機能しません。

最終的に機能したのは、プロジェクトのプロパティを開き、Java Build Path > Sourceに移動して、次の両方のディレクトリを追加することでした。

target/scala-2.11/src_managed/main
target/scala-2.11/twirl/main

target/scala-2.11/twirl/mainだけを行うと、confディレクトリから生成されたクラスファイルを見逃すことになります。

12
einnocent

Scala IDE 4.0.0は、すぐに使えるPlay Framework 2.3.7プログラムにエラーがあると考えています ソリューションを見つけることができます(簡単に:追加target/scala-2.11/twirl/mainフォルダーをコンパイルパスに)、試してみてください。

8

同じ問題がありました。追加した target/scala-2.x/classesおよびtarget/scala-2.x/classes_managed to my JavaビルドパスとEclipseは文句を言いませんでした。

4
Chip France

デフォルトのSBTレイアウト(disablePlugins(PlayLayoutPlugin))を使用してPlay 2.4.0-RC1を実行すると同じ問題が発生し、build.sbtに追加することで解決しました。

sourceDirectories in (Compile, TwirlKeys.compileTemplates) :=
    (unmanagedSourceDirectories in Compile).value
2
Lera

target/scala-2.11/twirl/mainパッケージを持っているviews.htmlパッケージをソースに追加して修正しました。

2
Surya Prabhakar

@ brent-foustの答えは私にとってはうまくいきましたが、最初は初めてでした。 IDEA内からプロジェクトを再構築するたびに、Brentの回避策を再度実行するまでtarget\scala-2.11\twirl\main\views\html\main.template.scala内から "not found:routes"エラーが発生します。

私は最終的にその解決策を発見しました。imlファイルの行を

<excludeFolder url="file://$MODULE_DIR$/target/scala-2.11/src_managed/main" />

<sourceFolder url="file://$MODULE_DIR$/target/scala-2.11/src_managed/main" isTestSource="false" />

これを行うことの長期的な影響が何であるかはわかりませんが、この問題は修正されました。言及された他の同様の問題のいくつかは、.imlにリストされている他のフォルダーのいくつかに同じ変更を適用することによって修正される可能性があります。

1
David Hinson

1)sbt.buildファイルに次の行を追加します。

EclipseKeys.preTasks := Seq(compile in Compile)

2)プロジェクトフォルダーの下のplugins.sbtファイルに次の行を追加します。

addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "5.1.0")

3)sbt内から「Eclipse」コマンドを実行します

playフレームワークのドキュメントで説明されているように:

お好みのIDEをセットアップする

0
user2038596

基本的に、これが機能するためには、コンパイルされたクラスをパスに配置する方法が必要です。

私はそれを修正するために次のことをしました。プロジェクトはtargetディレクトリにコンパイルされるため。 Project Properties-> Java Build Pathと、次のようなフォルダをいくつか追加しました。

target/scala-2.12/routes/main target/scala-2.12/twirl target/scala-2.12/twirl/main

今、あなたもあなたのケースでこれらの正確なフォルダーを持っていると仮定してほしくありません。それはプロジェクトのセットアップに依存します。ただし、target/scala-2.xフォルダー内にフォルダーを追加する必要があります。

0

プロジェクトをintellijにインポートするとき、「自動インポート」チェックボックスが「チェック」されていることを確認してください。

0
Tomer Ben David

私はすべての解決策を実証的な結果なしで試しました。
だから私はPreferences > Build, Execution, Deployment > Build Tools > sbtおよびチェック済みUse sbt Shellインポートおよびビルド用。
これにより、sbtシェルでintelliJのコンパイルボタンがコンパイルされます。とにかく、ビルドサーバーなどがintelliJではなく同じ方法でコンパイルされるため、これはより良いと思います。

0
Nabil A.