10

問題は、コントローラーが使用したいテンプレートを認識しないことです。

[etl_admin] $ compile [info] 3つのScalaソースと4つのJavaソースをD:\ ECLIPSE_WORKSPACES \ play2_apps \ etl_admin \ target \ scala-2.9.1 \ classes ...[エラー]D:\ ECLIPSE_WORKSPACES \ play2_apps \etl_admin\にコンパイルしていますapp \ controllers \ EtlWorkflowSeqNodeController.java:7:エラー:パッケージviews.html.etlworkflowseqnodeが存在しません[エラー] import views.html.etlworkflowseqnode.list; [エラー]
^[エラー]D:\ ECLIPSE_WORKSPACES \ play2_apps \ etl_admin \ app \ controllers \ EtlWorkflowSeqNodeController.java:14:エラー:シンボルが見つかりません

[エラー]list.render(EtlWorkflowSeqNode.findTree(jobId))[エラー] ^ [エラー]シンボル:変数リスト[エラー]
場所:クラスEtlWorkflowSeqNodeController[エラー]2エラー[エラー]{ファイル:/ D:/ ECLIPSE_WORKSPACES / play2_apps / etl_admin /} etl_admin / compile:compile:javacがゼロ以外の終了コードを返しました[エラー]合計時間:7秒、完了05.06.2012 17:14:44

コントローラコードは次のとおりです。

package controllers;

import play.mvc.Controller;
import play.mvc.Result;
import models.EtlWorkflowSeqNode;
import play.db.jpa.Transactional;
import views.html.etlworkflowseqnode.list; /*LINE #7, Eclipse really tells that there is no such package*/

public class EtlWorkflowSeqNodeController  extends Controller {

    @Transactional
    public static Result list(Integer jobId) {
        return ok(
            list.render(EtlWorkflowSeqNode.findTree(jobId))
        );
    }
}

プロジェクトツリーに画像を添付しました。そのようなパッケージがあり、「リスト」という名前のテンプレートがあります。 私のEclipse 私は何をしますか間違っています

4

5 に答える 5

16

ああ、問題はとても簡単でした!* classes_managed *(このフォルダーはコンパイルされたscalaテンプレートを保持します)は、新しく追加されたテンプレートで更新されませんでした。私は昨日playcompileを呼び出そうとしましたが、役に立ちません。新しいパッケージからの新しいテンプレートはコンパイルされませんでした。今朝、私はplay clean compile aaandと呼んでいます...やったー!コンパイルされたテンプレートを取得し、パッケージが見つからないという問題がなくなりました(Eclipseプロジェクトを更新することを忘れないでください。ファイルシステムから既存のプロジェクト構造を強制的に更新してください。すべてをキャッシュするのが好きです)。

邪魔してすみません、ドキュメントを読んでいる間私は注意を払っていなかったようです:(

于 2012-06-06T08:12:55.670 に答える
7

問題は、Playフレームワークによって動的に更新されるsrc_managedフォルダーがEclipseに表示されないことです。

プロジェクト→プロパティ→Javaビルドパス→ライブラリ(タブです)→外部クラスフォルダの追加に移動します

次に、プロジェクトと同じディレクトリのtarget->scala-xxxフォルダーにあるsrc_managedフォルダーを選択します。

これにより、src_managedがビルドパスに追加され、Eclipseはこれらのテンプレートが有効であることを認識します。

PlayFrameworkコンソールで「playcleancompile」を実行する必要がある場合があります。次に、Eclipseでプロジェクト->cleanを実行する必要がある場合があります。

于 2012-10-08T00:09:39.463 に答える
2

Play 2.5では、次の方法でこの問題を修正できました。

ビューをインポートします。

import views.html.index;

次に、コントローラーの内部:

return ok(index.render("Hello"));

複雑な問題のないこのようなものreturn ok(views.html.index.render("Hello")))、インポート中にこのように使用しても機能しなかったのは奇妙なことですが、それを使用するとうまく機能しました。

ここでのすべての回答も役に立ちます。問題は単にクリーンアップしてからコンパイルすることである場合もありますが、これでも、使用しているIDEに関係なく、CLIを使用していて、cannot find symbolエラーも発生していました。

于 2017-01-15T13:49:46.553 に答える
1

「パッケージviews.htmlが存在しません」を解決するには:

「sbtcompile」または「sbtcleancompile」を実行します。これにより、プロジェクトにtarget \ scala xx \ twirl \ main\views.htmlとしてフォルダー構造が作成されます。

于 2016-05-20T10:57:06.737 に答える
0

私の知る限り、あなたはパッケージ名etlworkflowseqnodeを持っていません!リストテンプレートをインポートする正しい方法は、次のようになります。

import views.html.list;

または、複数のビューを使用する場合は、ワイルドカードインポートを使用してそれらすべてをインポートできます。

import views.html.*;
于 2012-06-06T08:06:46.133 に答える