播放框架教程:无法解析符号“索引”?

Posted

技术标签:

【中文标题】播放框架教程:无法解析符号“索引”?【英文标题】:Play framework tutorial: Cannot resolve symbol 'index'? 【发布时间】:2013-06-05 04:35:45 【问题描述】:

我关注了a tutorial here,虽然我的整个教程运行良好,但我的 IntelliJ 项目中的一个类被标记为“红色警告”。我无法弄清楚这里的问题是什么?该项目有效,但显示了这些警告?关于这是什么以及如何解决它的任何想法?在教程中,大约 3.5 分钟后,红色标记神奇地消失了,视频演示者也没有解释。

【问题讨论】:

您使用的是什么版本的 IntelliJ?确保您已安装 Play 2.0 support 插件。 我使用的是社区版 12.1.3。我听说它有内置的支持。这是真的吗? 我不使用 IntelliJ,但在您问题的屏幕截图中,import views.html.* 显示为灰色,这是否意味着它已被注释掉? @2manyprojects - 不,这只是一条警告消息。话虽如此,“views”包中的静态“index”和“routes”对象是什么?如果不是,它们在什么包装中?我怀疑我只是错过了一个 IntelliJ 不够聪明无法解决的静态导入? 路由对象位于 controllers.routes。也许这只是漫长的一天,但我不确定我知道索引对象是什么意思......你是指 index.scala.html 文件的编译版本吗?假设它位于项目的views文件夹的根目录中,则位于views.html.index,否则为views.html..index. 【参考方案1】:

这个过程对我有用:

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

来自https://github.com/playframework/playframework/issues/1784#issuecomment-26345523

【讨论】:

从 play 2.3 开始,您可以对“target/scala-/twirl/main”执行相同的操作。只需确保将“main”标记为源文件夹即可。【参考方案2】:

Play 2.0 support plugin 仅在IntelliJ IDEA Ultimate edition 中可用。

【讨论】:

事实证明这是答案,但我不得不摆弄它一段时间,然后才触发了一些导致它开始工作的东西。谢谢。【参考方案3】:

我通过单独清理 IDEA 缓存(文件 -> 使缓存无效/重新启动)设法使其在 IDEA Community 14 上运行

【讨论】:

【参考方案4】:

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

【讨论】:

【参考方案5】:

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

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

...compiling 22 scala sources....

【讨论】:

我对您的建议尝试了各种变体,但我的 IDE 仍然无法识别“索引”符号。 我不确定,但你能试试play idealize myApp IDE 似乎通常对 Play 有很大的问题!项目。尝试从项目的命令行运行 clean-all,然后也从那里编译它。最终,您的 IDE 应该会发生什么……直到您下次更改视图文件,然后是 DOOOOM。 你也需要Scala插件,即使你运行Java测试项目 感谢@Jakob。这真的很有帮助.. :)【参考方案6】:

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

在编译视图之前,IntelliJ 不知道它们的存在,也不能自己制作项目。显然这是 IntelliJ 插件的问题,但由于您已经依赖 Play 进行动态编译,因此这种解决方法不会对工作流程造成太大影响。

【讨论】:

【参考方案7】:
    打开“项目”边栏 转到 target/scala-/src_managed 右键单击 src_managed,“将目录标记为”/“生成的源根目录” src_managed 的​​子目录有一个奇怪的原因,被标记为源根目录。您可以禁用它。 享受吧。

请注意,由于奇怪的原因,javascript 路由似乎仍然被忽略,因此这不是一个完美的解决方案。不过,有总比没有好。

【讨论】:

以上是关于播放框架教程:无法解析符号“索引”?的主要内容,如果未能解决你的问题,请参考以下文章

播放框架 sorm intellij - 无法解析符号 sorm

无法使用 intellij 14 解析路由文件中的符号并播放框架 2.4 reactivemongo

Play Framework & IntelliJ - 无法解析符号索引/路由

无法解析符号路径

Intellij IDEA 无法使用 Play 框架解析符号

无法解析的外部符号 C++