Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

IntelliJ IDEA Report Highlighting error when using routes in Controller

I have a Scala Play project. I'm using Play 2.2.1. I downloaded Scala, Play 2 supported and SBT plugins. Everything is OK, but When I call route on Action in the Controller appear following error(Look screenshots):

Screenshot1

Screenshot2

I'm using IntelliJ IDEA 12.1.6 Ultimate version. Scala version 2.10.2

Anybody know how to fix this problem?

Thanks in advance!


Edit

When I generate my project to Intellij IDEA via "play idea" command in play console, and I opened project in IDEA project structure was such:

screenshot6

Then I saw answer @millhouse and discussing on this githup([Play 2.2] "play idea" creates not working source mapping in target) and I removed following folders from Sources Folders:

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

and "Report highlighting error" disappeared, but now there is another error:

screenshot3

and

screenshot7

my route:

screenshot4

And I've changed "Sources Folders" as shown below:

screenshot5

But it doesn't help me. And remains "Unspecified value parametrs" error.

like image 304
SBotirov Avatar asked Nov 27 '13 06:11

SBotirov


2 Answers

millhouse's answer helped me find the right answer. Play 2.2 (and perhaps earlier versions, haven't checked) output a scala version of the routes file to project_dir/target/scala-2.10/src_managed/main So for IntelliJ to get the highlighting right you need to make sure that src_managed/main is added as a source folder. The reverse routes for javascript are for some reason included in project_dir/target/scala-2.10/classes_managed so you'll have to add that as well. (In your screenshot it looks like classes_managed is set to excluded so you'll want to un-exclude it by pressing the x button on the right hand side.)

Here's a screen shot of my project structure:

Working Play 2.2 project structure

Update:

In Play 2.3 (or perhaps recent versions of IntelliJ) adding the classes_managed no longer fixes the problem. Instead of adding classes_managed to the project's sources add it to it's dependencies. By doing that IntelliJ should be able to pick up the compiled routes.class.

Working Play 2.3 dependency list

like image 125
wm_eddie Avatar answered Sep 19 '22 14:09

wm_eddie


This is a common problem, it's because IntelliJ needs to be shown where to look for the compiled Scala templates and routes file. Here's how I fixed it on my IntelliJ 12.1 installation:

  • Go to the Module Settings for your project in IntelliJ (select the top-level, hit F4)
  • Choose the Modules item in the Project Structure window that appears
  • Select the projectname item (as opposed to the projectname-build item)
  • Add the compiler's output directory to the Source Folders items;
    • For Scala 2.10 it's target/scala-2.10/classes
    • I personally find the IntelliJ UI for this to be very non-intuitive; you might need to take the target directory and/or one of its subdirectories out of the Excluded Folders first
  • After applying that change, IntelliJ should see the results of compiling each routes and .scala.html file as just-another source file, so they won't show as "broken" and auto-complete should work for them.
like image 29
millhouse Avatar answered Sep 20 '22 14:09

millhouse