2013-05-21 8 views
15

私は再生フレームワークチュートリアルの1つを実行していますが、逆方向ルーティングを使用しようとするとコンパイルエラーが発生します。まず、IntelliJで逆方向ルーティングメソッドを解決できません

public static Result javascriptRoutes() { 
    response().setContentType("text/javascript"); 
    return ok(
     Routes.javascriptRouter("jsRoutes", 
      controllers.routes.javascript.Projects.add(), 
      controllers.routes.javascript.Projects.delete(), 
      controllers.routes.javascript.Projects.rename(), 
      controllers.routes.javascript.Projects.addGroup() 
     ) 
    ); 
} 

のIntelliJに示すエラーは、しかし、また、ユニットテストで

'(????java.lang.Stringで、、、、)方法javascriptRouterを解決できない' である。

@Test 
public void notAuthenticated() { 
    Result result = callAction(
      controllers.routes.ref.Application.index(), 
      fakeRequest() 
    ); 
    assertEquals(303, status(result)); 
    assertEquals("/login", header("Location", result)); 
} 

インデックスメソッドを解決できません。

これはintelliJの問題ですか、またはゲーム内で何か不足していますか?

最初の部分については、ここに私のルートファイル内のエントリです:

GET  /assets/javascripts/routes controllers.Application.javascriptRoutes() 

と私のコントローラは、プロジェクトでは、定義されたメソッドを持っています。

私は同じ問題に実行していた
+0

このようなメソッドが定義されていないようです。 –

+2

あなたがスマートなお尻になっているかどうかはわかりませんが、ルートファイルのセグメントを含めるように質問を編集しました。また、私のアプリケーションにはインデックスメソッドがあります。それはホームページをレンダリングするので私は知っている。 –

+0

このコードの元になるPlayチュートリアルにリンクしてください。 – nkr

答えて

37

ファイル - >プロジェクト構造

選択ソース右ペインに

ソースフォルダを追加

ターゲット/ Scalaの-XXX /は

ターゲットをclasses_managed/scala-XXX/src _managed/main

+2

これは正しい答えになるはずです –

+1

私のために修正しました –

+1

私は同意します。 – Amir

22

、ここで解決策を見つけた:要するにhttps://github.com/playframework/Play20/issues/969

を:

  • 実行activator compile
  • コントローラパッケージの下のディレクトリ javascriptrefを作成し、今のIntelliJ必要がありますそれを得る //「コンパイルを再生する」
  • まだエラーが発生した場合activator ideaをもう一度実行してください。//「再生コンパイル」*
+1

ありがとう!私はまず 'play idea'を実行してからフォルダを作成し、コンパイルエラーは魔法のように消えてしまいました。注文が重要かどうかはわかりません。 –

+0

これは一般的に正しい答えであるが、いくつかの明確化: は - /アプリ/コントローラ 下のJavaScript」と「REFのフォルダを追加 - 「プレイ」コマンドは、「活性化因子」 操作の私のために置き換えられました1)ディレクトリの追加、2)アクチベータのアイデア、3)アクチベータのコンパイル IntelliJで 'rebuild'を実行するには、 'activator compile'を再度実行する必要があります。煩わしい。 – Jelling

+1

実際には、ターゲット/ scala-xxx/src_managed/main/controllersにjavascriptとref dirを追加する必要があります – henrik

6

@Markus Kittigが提供するリンクから抜粋しています。大きな一時的な修正。 https://github.com/playframework/playframework/issues/1784#issuecomment-26345523

概要: ターゲット/ scala-XXXを管理対象のソースとして追加し、「ファイル」 - >「プロジェクトの構造」 - >「モジュール」 - >「ソース」の中でappコントローラとビューのソースフラグを削除します。その後、再コンパイルします。

IntelliJ Ultimate 12.1。{4 | 6}で動作します。コマンドラインインターフェイスでプレイアプリケーションを作成し、play ideaを使用してプロジェクトファイルを生成しました。中古のプレイ2.2.0。

1

この質問は1年前に尋ねられましたが、他のコーダーによる今後の質問に答えるために、問題は簡単に解決できます。この

public static Result javascriptRoutes() { 
    response().setContentType("text/javascript"); 
    return ok(
      play.Routes.javascriptRouter("jsRoutes", 

        // Routes for Projects 
        controllers.routes.javascript.Projects.add(), 
        controllers.routes.javascript.Projects.delete(), 
        controllers.routes.javascript.Projects.rename(), 
        controllers.routes.javascript.Projects.addGroup() 
      ) 
    ); 

}

ようなルート」のパスあなたは、クラスに適切な輸入品を持っていることを確認します。IntelliJの14.1で

import play.mvc.*; 
import play.data.*; 
4

をして働いていた上記の2.3.8何も再生しないが、このmailing listからのアドバイスは、働いていた(ほぼ)露骨にコピー:。

は、ターゲット/ Scalaの-2.11/src_managedとtの位置を確認しますプロジェクトビューのディレクトリを右クリックし、マークディレクトリ as->生成されたソース(ルート)

私はScalaのバージョンをぶつけ、明らかのIntelliJの新しいバージョンでルート単語が追加されました。また、プロジェクト構造ウィンドウでこれを選択することはできません。このオプションは使用できません。メインウィンドウのProjectペインでのみ可能です。 Generated Sourcesというマークが付いていない場合は、targetディレクトリのマークを解除してください([ディレクトリをマークする] - > [マークを解除])。

0

私はIdea 14.1.4コミュニティ版を使用しています。ターゲットフォルダを右クリックして除外しないとマークすることで、インデックスを削除し、解決されなかったエラーをルーティングすることができました。注:私は私のプロジェクトをコマンドラインを使って実行しています。私はideで実行コンフィギュレーションを見つけることができません。

+1

新しい質問がある場合は、[質問する](// stackoverflow.com/questions/ask)ボタンをクリックして質問してください。あなたが十分な評判を得ているなら、[あなたはupvote](// stackoverflow.com/privileges/vote-up)の質問をすることができます。あるいは、お気に入りに「スター」して、新しい回答があれば通知されます。 – NightShadeQueen

2

Play 2.4.x以上を使用している場合は、Playでjavascriptの逆ルーティングファイルが生成されないようです(src_managedなど)。

代わりにディレクトリをSourcesとして含める必要があります。

関連する問題