【问题标题】: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.

标签: playframework intellij-idea playframework-2.0


【解决方案1】:

这个过程对我有用:

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

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

【讨论】:

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

【讨论】:

  • 事实证明这是答案,但我不得不摆弄它一段时间,然后才触发了一些导致它开始工作的东西。谢谢。
【解决方案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】:
        1. 打开“项目”边栏
        2. 转到 target/scala-/src_managed
        3. 右键单击 src_managed,“将目录标记为”/“生成的源根目录”
        4. src_managed 的​​子目录有一个奇怪的原因,被标记为源根目录。您可以禁用它。
        5. 享受吧。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-02-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多