Play Framework2.0.1を使用しています。 「playnew」コマンドを使用してJavaアプリケーションを作成しました。デフォルトでは、index.scala.htmlとmain.scala.htmlの2つのビューが作成されます。
これらのビューをレンダリングできるサンプルチュートリアルアプリをいくつか作成しました。ただし、新しいビュー(デフォルトではapp/views /)を追加すると、コンパイルエラーが発生し、見つからないことがあります。
public static Result getAllCars() {
List<Car> cars = Car.getAllCars();
return ok(simpleCarView.render(cars));
}
できます
import views.html.index;
import views.html.main;
だがしかし
import views.html.simpleCarView;
コンソールのエラー:
cannot find symbol
[error] symbol : variable simpleCarView
[error] location: class controllers.Application
ファイルディレクトリとEclipse内からscala.htmlビューを追加しようとしましたが、何らかの理由で見つかりません。また、デフォルトのNettyサーバーを再起動してみました。
これを引き起こしているものについてのアイデアはありますか?
ビューはEclipseによってコンパイルされませんが、target\scala-2.9.1\classes_managedディレクトリがEclipseプロジェクトのビルドパスにある限り、Playによってコンパイルされた後にEclipseで表示できます。
コマンドラインで「playcompile」を実行して(または、すでにplay consoleを使用している場合は単に「compile」)、Eclipse内でプロジェクトを更新してみてください(プロジェクトを選択してF5キーを押します)
IntelliJ 12ユーザーの方へ:Play 2.1にアップグレードしたため、PlayIntelliJサポートプラグインが壊れました。これにより、IntelliJは以下を認識しませんでした。
import views.html.*;
そのため、インポートを最適化するためにcmd + o
を押すと、削除されました。ビューがインポートされなかったため、play clean compile
を実行すると、この結果、コンパイルエラーが発生します。
[error] symbol : variable index
[error] location: class controllers.Application
[error] return ok(index.render());
[error] ^
[error] 1 error
[error] (compile:compile) javac returned nonzero exit code
[error] application -
そこで、プラグインをアンインストールし、IntelliJを再起動すると、ビオラはすべて魅力のように機能します。
あなたが使用できます
~compile
playコンソールで、更新されたテンプレートがファイルの変更時に再コンパイルされ、おそらくEclipseがすぐに変更を確認できるようにします(IDEAがそれを行います)。
これは、プロジェクト全体をコピーして変更しようとした後に発生しました。 HTMLビューの変更は、コンパイルされていないため、無視されます。
activator clean compile run
問題を修正しました。
私もこの行動をしました。それは典型的なコピー/貼り付けの問題であることが判明しました。 importステートメントを更新するのを忘れています。
私の場合、次のインポートを追加しました。
import views.html.*;
Eclipse IDEは、インポートを整理すると、上記の行を削除します CTRL + SHIFT + O
InPursuitが提案したのと同じplay compileを実行しますが、完全に新しいビューを追加するときに、Eclipseが「コンテンツアシスト」情報を再構築するために、プロジェクトを閉じて再度開く必要があることがわかりました。
プロジェクトを右クリックして[プロジェクトを閉じる]を選択し、空になったプロジェクトフォルダーを右クリックして[プロジェクトを開く]を選択します。それは面倒ですが、それが私のために働いた唯一の方法です(Eclipseを再起動する以外)。開いた後も赤い波線が残っていることがありますが、リフレッシュすると消えます。