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というビューにファイルがあり、アクティベーターから実行するとアプリがファイルを実行します。
Play 2.4.xでビューを追加した後、IntelliJ IDEAが時々混乱し、ビルドを絶対に拒否します。プロジェクトの再構築でさえ失敗します:
これはIDEA 15で時々発生します。そして、その場合、コマンドラインは最も迅速で信頼性の高い修正を提供します。
sbt clean; sbtコンパイル
それでおしまい! IDEAはプロジェクトを期待どおりにコンパイルします。
更新:
まれに、sbt compile
コマンドラインで正常に完了しましたが、IntelliJ IDEA 15は同じ「オブジェクトxはメンバーではありません」というエラーを引き続き表示し、IDEAの混乱を解決しました。
ファイルメニュー:
他の解決策はうまくいきませんでした。いくつかのエラーが表示されたり、[問題]タブがクリアされたりしますが、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
ディレクトリから生成されたクラスファイルを見逃すことになります。
Scala IDE 4.0.0は、すぐに使えるPlay Framework 2.3.7プログラムにエラーがあると考えています ソリューションを見つけることができます(簡単に:追加target/scala-2.11/twirl/main
フォルダーをコンパイルパスに)、試してみてください。
同じ問題がありました。追加した target/scala-2.x/classes
およびtarget/scala-2.x/classes_managed
to my JavaビルドパスとEclipseは文句を言いませんでした。
デフォルトのSBTレイアウト(disablePlugins(PlayLayoutPlugin)
)を使用してPlay 2.4.0-RC1を実行すると同じ問題が発生し、build.sbt
に追加することで解決しました。
sourceDirectories in (Compile, TwirlKeys.compileTemplates) :=
(unmanagedSourceDirectories in Compile).value
target/scala-2.11/twirl/main
パッケージを持っているviews.html
パッケージをソースに追加して修正しました。
@ 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)sbt.buildファイルに次の行を追加します。
EclipseKeys.preTasks := Seq(compile in Compile)
2)プロジェクトフォルダーの下のplugins.sbtファイルに次の行を追加します。
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "5.1.0")
3)sbt内から「Eclipse」コマンドを実行します
playフレームワークのドキュメントで説明されているように:
基本的に、これが機能するためには、コンパイルされたクラスをパスに配置する方法が必要です。
私はそれを修正するために次のことをしました。プロジェクトは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フォルダー内にフォルダーを追加する必要があります。
プロジェクトをintellijにインポートするとき、「自動インポート」チェックボックスが「チェック」されていることを確認してください。
私はすべての解決策を実証的な結果なしで試しました。
だから私はPreferences > Build, Execution, Deployment > Build Tools > sbt
およびチェック済みUse sbt Shell
インポートおよびビルド用。
これにより、sbtシェルでintelliJのコンパイルボタンがコンパイルされます。とにかく、ビルドサーバーなどがintelliJではなく同じ方法でコンパイルされるため、これはより良いと思います。