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 测试