2013-11-27 56 views
34

我有一個Scala Play項目。我正在使用Play 2.2.1。我下載了Scala,Play 2支持和SBT插件。一切都OK,但是當我在控制器呼籲行動路線出現以下錯誤(請看截圖):IntelliJ IDEA報告在控制器中使用路由時突出顯示錯誤

Screenshot1

Screenshot2

我使用的IntelliJ IDEA 12.1.6旗艦版。斯卡拉版本2.10.2

有人知道如何解決這個問題?

在此先感謝!


Edit

當我生成我的項目的IntelliJ IDEA通過在遊戲控制檯 「打主意」 命令,我打開了IDEA項目結構項目是這樣的:

screenshot6

然後我看到答案@millhouse和討論這githup([Play 2.2] "play idea" creates not working source mapping in target),我從刪除以下文件夾來源文件夾

  • target\scala-2.10\src_managed\main\controllers
  • target\scala-2.10\src_managed\main\views

和 「報告,強調錯誤」 消失了,但現在有另一個錯誤:

screenshot3

screenshot7

我的路線:

screenshot4

而且我已經改變了 「源文件夾」,如下圖所示:

screenshot5

但它並不能幫助我。並保持「未指定的值參數」錯誤。

+1

升級到IntelliJ IDEA的13,並使用'文件 - >導入Project'並選擇'SBT project'。使用'play idea'生成想法文件不再是必需的。 –

+1

以下是該錯誤報告:https://github.com/playframework/playframework/issues/1784 –

+0

這可能與以下問題有關:https://youtrack.jetbrains.com/issue/SCL-7726 – Martin

回答

47

millhouse的回答幫我找到了正確的答案。玩2.2(也許更早的版本,沒有檢查)輸出路線文件的一個scala版本到project_dir/target/scala-2.10/src_managed/main因此,對於IntelliJ來獲得突出顯示的權利,你需要確保src_managed/main被添加爲源文件夾。 javascript的反向路由由於某種原因包含在project_dir/target/scala-2.10/classes_managed中,因此您必須添加該路由。 (通過按下右側的X按鈕在你的屏幕截圖,它看起來像classes_managed設置爲排除所以你想取消它排除在外。)

這裏是我的項目結構的屏幕截圖:

Working Play 2.2 project structure

更新

在播放2.3(或者是最近的IntelliJ的版本)將classes_managed不再修復該問題。不要將classes_managed添加到項目的源代碼中,而是將其添加到它的依賴項中。通過這樣做,IntelliJ應該能夠獲取已編譯的routes.class。

Working Play 2.3 dependency list

+2

如果仍然出現錯誤,請執行「文件」>「使緩存失效」,並且重新啓動可能會有所幫助。 –

+0

謝謝你在Play 2.2.2的作品 –

+0

輝煌。像魅力一樣工作! – Karlth

8

這是一個普遍的問題,這是因爲的IntelliJ需要顯示在哪裏查找編譯斯卡拉模板和routes文件。以下是我將它固定在IntelliJ 12上的方法。1個安裝:

  • 轉到模塊設置在的IntelliJ項目(選擇頂層,按F4鍵)
  • 選擇在出現
  • 選擇項目名稱項目結構窗口中的模塊項目項目(而不是在項目名稱,建設項目)
  • 添加編譯器的輸出目錄到源文件夾物品;
    • 對於斯卡拉2.10這是target/scala-2.10/classes
    • 我親自找到的IntelliJ UI這是非常不直觀;您可能需要採取target目錄和/或它的一個子目錄了排除的文件夾第一
  • 將這一變化後,的IntelliJ應該看到編譯每個routes.scala.html文件作爲剛剛另一個的結果源文件,所以它們不會顯示爲「破碎」並且自動完成應該適用於它們。
+0

@ Millhouse爲什麼只應該在sources文件夾中添加「target/scala-2.10/classes/views」?爲什麼不添加「target/scala-2.10/classes/controllers」和「target/scala-2.10/classes/models」文件夾Sources Sources? –

+1

@ mr.boyfox你說得對,我已經更新了我的答案,以便你的'routes'和'.scala.html'模板文件都能被拾取。 – millhouse

+0

謝謝@millhouse,我試過了,但出現了另一個錯誤,請參閱我的編輯 –

相關問題