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

Posted

技术标签:

【中文标题】Intellij IDEA 无法使用 Play 框架解析符号【英文标题】:Intellij IDEA can not resolve symbol with Play framework 【发布时间】:2014-02-05 12:39:53 【问题描述】:

我正在使用带有 Play 2.2.1 的 IDEA 13,并在 play site 上做示例。

public static Result index() 
   return redirect(routes.Application.tasks());

IDEA 说“无法解析方法重定向(?)”,红色下划线 routes.Application.tasks()

我已经完成了“编译”,然后从播放控制台“构思”。

【问题讨论】:

你能分享你的导入和控制器 cobject 第一行... 【参考方案1】:

我在测试我的控制器时遇到了类似的问题。我通过"File" > "Open Project"解决了它并选择了Play框架项目的基本文件夹(从之前的文件夹中删除所有idea设置文件,以便它将使用SBT设置重新导入)。

对 IDEA 的 SBT 支持的最新版本完成了 90% 的工作。然后 F4 进入模块设置对话框。如下图所示设置您的项目依赖项(亮红色的文件夹已由 IDEA 设置,并且在我的项目中尚不存在,因此请不要担心它们是否存在于您的项目中)。这是在idea将使用和索引的代码中包含托管类和生成的代码的问题。

现在我可以在 IDEA 中使用这样的代码并毫无问题地对其进行调试。

Result result = Helpers.callAction(controllers.routes.ref.CrudController.createEntity(CrudEntities.contact.name()),
        new FakeRequest().withJsonBody(paramJson)
);

你的做法也应该行得通。

【讨论】:

用我冰冷的黑心感谢你。在我基本上破解了这个项目之前,reactivemongo 导入根本不会在 intellij IDEA 中为我工作。删除 .idea 目录,然后在 intellij 中重新打开它。 (虽然先备份)。这确实使我的生活浪费了很多天。谢谢。 @BizNuge “我的姐姐/弟弟来自另一个母亲。”我觉得你我也经历过。在。每一个。主意。更新。 我讨厌这个软件……它现在已经完全忘记了它曾经知道 import play.api.Play 应该做什么……这就像我个人有问题一样…… . 事情是当它真的很好用的时候......就像一个女朋友在喝龙舌兰酒之前真的很有趣...... 好的,当发生这种奇怪的事情时,我检查 SBT 是否有效(如果您可以从该项目进入 SBT 控制台,则表示它是有效的)更新依赖项(因为即使一个不是,idea 也会停止重新加载resolvable) 然后我将核解决方案放在它上面,即 File > Invalidate Cache and Restart 我有 Intellij 15,Play 2.4.6 框架。我也遇到了同样的cannot resolve symbol routes 错误。如何解决这个问题?需要帮助。【参考方案2】:

我正在使用“IntelliJ Idea 13”并使用“Activator”进行“sbt”Playframework 项目。在尝试了一切之后,我终于在我现有的根 sbt 项目中通过终端/cmd 中的以下步骤解决了这个问题

    在终端/cmd 中输入此命令: sbt clean 然后删除这些文件和文件夹:“.idea”、“所有 _.iml 文件”、“所有目标文件夹都位于项目文件夹中(这可能不是必需的,但我这样做了。)” 在终端/cmd中输入此命令:sbt idea 现在在 IntelliJ 中:打开项目

注意: 如果您使用“Play”命令而不是“Activator”构建 Playframework 项目 而不是sbt idea 命令,您可以尝试 play idea play "idea with-sources=yes"

希望这会对你有所帮助。

【讨论】:

这对我有用,谢谢!重新打开项目后,IDEA提示我它是使用旧项目格式生成的,并说我应该转换它,我做到了。然后它提示我使用 SBT 导入器,我这样做了。瞧!它有效。 它导致错误“不是有效的命令”。问题是什么? sbt idea >.\sbt-dist\bin\sbt.bat idea Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m; 8.0 中删除了支持 [info] 从 D:\CODE\Web Development\play-java\project 加载项目定义 [info] 将当前项目设置为 play-java-intro(在构建文件中:/D:/CODE/Web% 20Development/play-java/) [error] 不是一个有效的命令:idea (similar: eval, alias) [error] 不是一个有效的key:idea (similar: clean) [error] idea [error] ^【参考方案3】:

这些步骤对我有用: 将以下行添加到您的 plugins.sbt 文件中:

resolvers += "sbt-idea-repo" at "http://mpeltonen.github.com/maven/"
addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.2.0")
but if you don't know the correct version of sbt-idea then use this instead:
addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "latest.integration")

警告 - 构建需要花费太多时间,因为它需要解析所有 版本并获取最新版本。

运行这个命令 -

sbt gen-idea

【讨论】:

谢谢!很好的解决方案。【参考方案4】:

我可以通过将生成的代码目录标记为“Sources”文件夹来解决问题。转到文件 -> 项目结构 -> “根”模块 -> 源代码。

【讨论】:

更明确地说,从排除文件夹中删除 target/scala-2.11/routes/main 并将其添加到源文件夹中。【参考方案5】:

我必须将以下插件条目添加到我的 plugins.sbt(在项目文件夹下),以便 intellij IDEA 解析路由等播放变量。

addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.6.0")

注意:将上述插件添加到plugins.sbt后,运行以下命令重建idea并解决问题:

活化剂清洁 活化剂的想法

【讨论】:

>activator idea 不再是“有效密钥”(OSX)(从 Play 2.4 开始)。【参考方案6】:

在我的情况下,从一个对您正在输入 sbt 的项目没有权限的用户运行 sbt 命令。 清理然后使用 chown -R yourUser /path/to/project 更改文件夹权限,它应该修复它。 之后./sbt compile

【讨论】:

【参考方案7】:

我遇到了类似的问题 - IDEA 无法解决 Play!框架依赖。

就我而言,.idea 文件夹存在问题。我将项目复制到单独的文件夹并在复制的项目根文件夹中运行“activator idea”命令。然后我比较了原始项目和复制项目中的 .idea 文件夹 - 我发现了不同之处!在文件夹 .idea/libraries 中的复制项目中,有很多 XML 文件包含指向依赖项的链接,所以我将它们复制到原始项目的同一个文件夹中,重新索引项目,从那一刻起一切都很完美:) 我这样做是因为我不想丢失我的项目设置(删除 .idea 文件夹并在原始项目文件夹中运行命令“activator idea”应该可以解决问题,但项目设置会丢失)。

希望这会有所帮助:)。

【讨论】:

以上是关于Intellij IDEA 无法使用 Play 框架解析符号的主要内容,如果未能解决你的问题,请参考以下文章

将 google-play-services 库导入 Intellij IDEA 12(和 13)

TwirlKeys.templateImports with Play 未在 IntelliJ IDEA 模板文件中解析

IntelliJ IDEA 15 Play 2.4 反向路由方法参数“string cannot be applied to java.lang.String”

intellij idea 中的 playframework 测试

如何在 IntelliJ 中运行 Play Framework 2.1 项目?

IntelliJ 无法解析 Activator-Play build.sbt libraryDependencies