IntelliJ IDEA 14中没有的“路线”有什么问题?
答案 0 :(得分:8)
对于路径文件中使用的每个控制器,路由器将生成 路由包中的“反向控制器”,具有相同的操作 方法,具有相同的签名,但返回play.mvc.Call 而不是play.mvc.Result。
编译应用程序时会生成反向控制器。因此,您需要编译应用程序,以便在IDE中访问这些类。要确保Idea正确找到文件,您可以右键单击包含生成的类的target的子目录,并将其标记为源目录。
答案 1 :(得分:2)
我几次遇到这个问题。对我来说,该项目将使用sbt
进行编译,但Intellij无法解析引用。以下是我发现的一些原因:
原因1:命名空间混淆
我遇到过这种情况的一个原因是,由于某些通配符导入,Intellij对名称空间感到困惑 - 它实际上与项目配置无关。
例如,我们发现如果您import play.api._
,则Intellij无法解析import controllers.routes
(或controllers
中的任何其他内容)。如果你换掉它们,那就好了。
您可以通过移动导入来查看这是否是问题,或者查看相同的导入是否适用于不同的文件。
要检查Intellij是否真的无法解析您的课程,请尝试从_root_
引用该课程。通过上面的示例,Intellij始终能够解析_root_.controllers.routes
,因此我知道这不是与我的项目配置相关的问题。
(我不会在代码中留下_root_
,但我认为它有点丑陋和令人困惑!有人会删除它然后问题会回来。相反,我&# 39; d尝试删除外卡导入)
原因2:生成的来源未标记为"来源"
routes
之类的类和view
内的其他模板类是自动生成的。项目没有正确配置,Intellij没有意识到有自动生成的路径和旋转源文件。
在我的系统上,这些自动生成的文件夹位于target/scala-[VERSION]/
src_managed
(所有路线内容)和twirl
(所有模板内容)。
要检查/修复此问题,请执行以下操作:
target
内找到上述文件夹,并将src_managed/main
和twirl/main
标记为"来源" (注意您标记main
文件夹,而不是外部文件夹) 原因3:排除target
我发现有时在导入项目时,Intellij会自动将target
目标标记为已排除。这意味着"来源"在里面它被有效地忽略了。因此,请确保您自动生成的资源不在某个排除的目录中。
要解决此问题,请按照2中的说明进行操作,并确保target
文件夹没有特殊标记。在我的Intellij版本中,这意味着图标是正常的棕色 - 不是红色或蓝色。
如果您必须这样做,那么target
内的所有目录都可能不被排除在外。为了完整起见,我递归地将所有目录(如resolution-cache
和streams
)标记为已排除,以便不排除旋转和路径源目录。
作为一个团队,我们很遗憾地遇到了这些问题。我们使用的一个技巧是只复制/粘贴彼此的.idea/modules/root.iml
文件作为所有配置所在的文件。因此,如果一个开发人员有一个工作设置,只需将他们的Intellij conf复制到您自己的机器上。
这是我的conf的一个片段,它涉及如何配置源和排除(它基本上复制了上面2和3中的步骤)。我用它来玩2.3应用程序,它的工作原理。如果你有其他复杂的配置或依赖项自动生成代码,你可以尝试将它合并到你的root.iml
中,或者如果你有一个简单的游戏项目,只需用你的content
元素替换它:
...
<content url="file://$MODULE_DIR$/../..">
<sourceFolder url="file://$MODULE_DIR$/../../app" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/../../app-2.11" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/../../target/scala-2.11/src_managed/main" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/../../target/scala-2.11/twirl/main" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/../../target/scala-2.11/src_managed/test" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/../../target/scala-2.11/twirl/test" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/../../test" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/../../test-2.11" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/../../conf" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/../../target/scala-2.11/resource_managed/main" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/../../target/scala-2.11/resource_managed/test" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/../../test/resources" type="java-test-resource" />
<excludeFolder url="file://$MODULE_DIR$/../../target/resolution-cache" />
<excludeFolder url="file://$MODULE_DIR$/../../target/streams" />
</content>
...
答案 2 :(得分:0)
你试过没有***
吗?
return redirect(routes.Application.index();
答案 3 :(得分:0)
我解决了执行另一个线程https://stackoverflow.com/a/34085037/5078874
中指定的这两个步骤(我正在使用Idea 15.0.1)
addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.6.0")
然后执行命令:
sbt gen-idea
答案 4 :(得分:0)
如biesior所示,这对我有用:
.filter