我用play 2.3.7
创建了一个游戏项目在项目目录中,我运行了activator并运行eclipse
命令来生成eclipse项目文件。
当我去eclipse时(我使用的是类型安全的构建ID:4.0.0-vfinal-20150119-1023-Typesafe中的Scala IDE,我的Application.scala文件中有一个错误:
object index is not a member of package views.html
我的设置有什么不对吗?当我在激活控制台提示符下执行run
时,应用程序运行正常。
谢谢!
编辑:添加了代码
package controllers
import play.api._
import play.api.mvc._
object Application extends Controller {
def index = Action {
Ok(views.html.index("Your new application is ready."))
}
}
错误在'Ok ..'行。
视图中有一个名为index.scala.html的文件,当我从激活器运行时,应用程序会运行文件。
答案 0 :(得分:25)
偶尔在Play 2.4.x中添加视图后,IntelliJ IDEA有时会感到困惑,绝对拒绝构建。甚至重建项目都失败了:
这仍然在IDEA 15中不时发生。当它发生时,命令行提供最快,最可靠的修复:
干净; sbt compile
那就是它! IDEA现在将按预期编译项目。
更新
在极少数情况下sbt compile
在命令行上成功完成,但IntelliJ IDEA 15仍然提供相同的"对象x不是成员"错误,这解决了IDEA的困惑:
文件菜单:
答案 1 :(得分:12)
其他解决方案对我不起作用。有些会给我不同的错误,有些会清除问题标签,但在views.html.index
下留下一个红色的波形,自动完成不适用于scala.html模板。
最终工作的是打开项目的属性,转到Java Build Path > Source
,然后添加以下两个目录:
target/scala-2.11/src_managed/main
target/scala-2.11/twirl/main
如果您只执行target/scala-2.11/twirl/main
,那么您将错过从conf
目录生成的类文件。
答案 2 :(得分:8)
在Scala IDE 4.0.0 thinks there's errors in an out-of-the-box Play Framework 2.3.7 program中,您可以找到解决方案(简而言之:将target/scala-2.11/twirl/main
文件夹添加到编译路径中),试一试。
答案 3 :(得分:4)
我遇到了同样的问题。我将target/scala-2.x/classes
和target/scala-2.x/classes_managed
添加到我的Java构建路径中,Eclipse停止了抱怨。
答案 4 :(得分:2)
我在使用默认SBT布局(disablePlugins(PlayLayoutPlugin)
)运行Play 2.4.0-RC1时遇到了同样的问题,并通过添加到build.sbt
解决了这个问题:
sourceDirectories in (Compile, TwirlKeys.compileTemplates) :=
(unmanagedSourceDirectories in Compile).value
答案 5 :(得分:2)
将Set:
$cookieStore.put('ItsMe', 12345);
Retrieve:
$cookieStore.get('ItsMe');
Remove:
$cookieStore.remove('ItsMe');
包含target/scala-2.11/twirl/main
个包的views.html
添加到为我修复的来源。
答案 6 :(得分:1)
@ brent-foust的回答对我有用,但最初才有效。每次我从IDEA内部重建项目时,我都会在<excludeFolder url="file://$MODULE_DIR$/target/scala-2.11/src_managed/main" />
内得到“not found:routes”错误,直到我再次执行Brent的解决方法。
我最终发现解决方案是改变.iml文件中的一行
<sourceFolder url="file://$MODULE_DIR$/target/scala-2.11/src_managed/main" isTestSource="false" />
到
{{1}}
我不知道这样做的长期影响是什么,但它解决了这个问题。通过对.iml中列出的某些其他文件夹应用相同的更改,也可以解决上面提到的其他一些类似问题。
答案 7 :(得分:0)
对我来说,在将项目导入intellij时确保我“选中”“自动导入”复选框就可以了。
答案 8 :(得分:0)
1)将以下行添加到sbt.build文件中:
EclipseKeys.preTasks := Seq(compile in Compile)
2)将以下行添加到项目文件夹下的plugins.sbt文件中:
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "5.1.0")
3)从sbt
中运行“eclipse”命令如播放框架的文档中所述:
答案 9 :(得分:0)
基本上我们需要一种方法将已编译的类放在路径上以使其工作。
我做了以下修复。
由于项目编译到target
目录。
我去了Project Properties
- &gt; Java Build Path并添加了一些看起来像这样的文件夹,
目标/阶-2.12 /路线/主要 目标/阶-2.12 /捻 目标/阶-2.12 /捻/主
现在我不希望你假设你的情况下也会有这些确切的文件夹。这取决于您的项目设置。 但是您应该在target / scala-2.x文件夹中添加文件夹。
答案 10 :(得分:0)
我尝试了所有解决方案,但没有任何积极结果。
因此,我去了Preferences > Build, Execution, Deployment > Build Tools > sbt
并检查了Use sbt shell
的导入和构建。
这使intelliJ中的compile按钮与sbt shell一起编译。
无论如何,我认为这样做更好,因为构建服务器或类似的东西将以相同的方式进行编译,而不像intelliJ。