Playframework 播放框架教程:无法解析符号';索引';?

Playframework 播放框架教程:无法解析符号';索引';?,playframework,intellij-idea,playframework-2.0,Playframework,Intellij Idea,Playframework 2.0,我遵循了这一点,尽管整个教程都运行得很好,但我的IntelliJ项目中的一个类被标记为“红色警告”。我想不出这里有什么问题?项目可以工作,但它显示了这些警告?关于这是什么以及如何修复它有什么想法吗?在教程中,大约3.5分钟后,红色标记神奇地消失了,视频演示者没有解释 仅当项目首次加载到浏览器中时,才会编译管线文件和视图。在此之前,IntelliJ显示错误,因为它无法找到这些类。但当您运行应用程序并将其加载到浏览器中时,错误会神奇地消失 您可以在播放控制台中验证这一点。执行播放运行并在浏览器中加载

我遵循了这一点,尽管整个教程都运行得很好,但我的IntelliJ项目中的一个类被标记为“红色警告”。我想不出这里有什么问题?项目可以工作,但它显示了这些警告?关于这是什么以及如何修复它有什么想法吗?在教程中,大约3.5分钟后,红色标记神奇地消失了,视频演示者没有解释


仅当项目首次加载到浏览器中时,才会编译管线文件和视图。在此之前,IntelliJ显示错误,因为它无法找到这些类。但当您运行应用程序并将其加载到浏览器中时,错误会神奇地消失

您可以在播放控制台中验证这一点。执行
播放运行
并在浏览器中加载url
localhost:9000
后,您可以在播放控制台中看到编译消息

…编译22个scala源代码….

仅在中提供


转到播放项目的运行配置,从“启动前”部分删除“制作”步骤。然后,IntelliJ将只运行Play项目而不尝试编译,视图将自动编译

在编译视图之前,IntelliJ不知道它们的存在,也无法创建项目本身。很明显,这是IntelliJ插件的一个问题,但由于您已经依赖Play来动态编译,因此此解决方案不会对工作流造成太大的影响

  • 打开“项目”侧栏
  • 转到target/scala-/src\u managed
  • 右键单击src_managed,“将目录标记为”/“生成的源根目录”
  • src_managed的子目录来自标记为源根的奇怪原因。你可以禁用它
  • 享受

  • 注意,由于一个奇怪的原因,javascript路由似乎仍然被忽略,所以这不是一个完美的解决方案。然而,总比什么都没有好。

    这个过程对我来说很有效:

  • 进入[文件->项目结构->模块->YourAppModule]->源选项卡]
  • 导航到“target/scala-[version]/src_managed”目录(右侧面板)
  • 右键单击“主”目录并将其标记为源文件夹
  • 右键单击“控制器”和“视图”并删除“源”标志(您应该看到控制器和视图文件夹变成包目录)
  • 应用->确定->重新编译

  • 开始,我仅通过清理IDEA缓存(文件->使缓存失效/重新启动)使其在IDEA Community 14上工作。

    视图/模板不是类,这就是IDE无法识别它们的原因。IDE应该配置为查找视图的编译版本。此单击将解决您的问题


    我尝试了你所建议的各种变体,但我的IDE仍然无法识别“索引”符号。我不确定,但你能否尝试
    play理想化myApp
    IDE似乎在播放方面有很大的问题!项目。尝试从项目的命令行运行clean all,然后从那里编译它。最终,你的IDE应该会得到进展…直到你下次对视图文件进行更改,然后dooom。你还需要Scala插件,即使你运行Java测试项目Thank@Jakob。这真的很有帮助……)您正在使用哪个版本的IntelliJ?确保安装了
    play2.0支持插件
    。我使用的是社区版12.1.3。我听说它有内置的支持。这是真的吗?我不使用IntelliJ,但在你问题的屏幕截图中,
    import views.html.*
    是灰色的,这不意味着它被注释掉了吗?@2manyprojects-不,这只是一条警告信息。也就是说,静态“索引”和“路由”对象是否在“视图”包中?如果没有,它们是什么包装?我怀疑我只是缺少了一个IntelliJ不够聪明的静态导入,无法解析?routes对象位于controllers.routes。也许这只是漫长的一天,但我不确定我知道你所说的索引对象是什么意思。。。您是指index.scala.html文件的编译版本吗?这可能是在views.html.index,假设它位于项目的views文件夹的根目录中,否则是views.html..index。结果证明这就是答案,但我不得不在触发某个导致它开始工作的事件之前将其摆弄一段时间。谢谢。从第2.3版开始,您可以对“target/scala-/twirl/main”执行相同的操作。只需确保将“main”标记为源文件夹。