【问题标题】:Unable to resolve reverse routing methods in IntelliJ无法解析 IntelliJ 中的反向路由方法
【发布时间】:2013-05-16 14:13:14
【问题描述】:

我正在学习其中一个播放框架教程,但每当我尝试使用反向路由时都会遇到编译错误。首先,

public static Result javascriptRoutes() {
    response().setContentType("text/javascript");
    return ok(
        Routes.javascriptRouter("jsRoutes",
            controllers.routes.javascript.Projects.add(),
            controllers.routes.javascript.Projects.delete(),
            controllers.routes.javascript.Projects.rename(),
            controllers.routes.javascript.Projects.addGroup()
        )
    );
}

intelliJ 中显示的错误是“无法解析方法 javascriptRouter(java.lang.String, ?, ?, ?, ?)”

还要在一个单元测试中:

@Test
public void notAuthenticated() {
    Result result = callAction(
            controllers.routes.ref.Application.index(),
            fakeRequest()
    );
    assertEquals(303, status(result));
    assertEquals("/login", header("Location", result));
}

无法解析索引方法的地方。

这是 IntelliJ 的问题,还是我在游戏中遗漏了什么?

对于第一部分,这是我的路线文件中的条目:

GET     /assets/javascripts/routes  controllers.Application.javascriptRoutes()

我的控制器 Projects 已经有了定义的方法。

【问题讨论】:

  • 好像没有定义这样的方法。
  • 我不确定你是否只是个聪明人,但我编辑了我的问题以包含一段路线文件。另外,我的应用程序有一个索引方法。我知道,因为它呈现主页。
  • 请链接此代码来源的 Play 教程。
  • playframework.com/documentation/2.1.1-RC2/JavaGuide6 这是第六部分或教程。相关部分在顶部。
  • 我没问题,先尝试忽略错误,在控制台上运行play compile 并再次检查 IntelliJ。此外,提示:在您的评论中写@nkr,以便我收到您回复的通知。

标签: java intellij-idea playframework-2.0


【解决方案1】:

我遇到了同样的问题,在这里找到了解决方案:https://github.com/playframework/Play20/issues/969

简而言之:

  • 在controllers包下创建javascriptref目录
  • 运行activator compile,现在 Intellij 应该会得到它// 以前是“play compile”
  • 如果仍然出现错误,请尝试再次运行 activator idea // 以前是“play compile”*

【讨论】:

  • 非常感谢!我首先运行play idea,然后创建了文件夹,编译错误就像魔术一样消失了。不确定订单是否重要。
  • 这通常是正确的答案,但有一些说明: - 在 /app/controllers 下添加 'javascript' 和 'ref' 文件夹 - 'play' 命令已替换为 'activator' 我的订单操作是 1) 添加目录,2) 激活器的想法,和 3) 激活器编译 在 IntelliJ 中进行“重建”需要再次运行“激活器编译”。烦人。
  • 其实你应该添加javascript和ref dirs到target/scala-xxx/src_managed/main/controllers
【解决方案2】:

来自@Markus Kittig 提供的链接。伟大的临时修复。 https://github.com/playframework/playframework/issues/1784#issuecomment-26345523

简介: 添加 target/scala-XXX 作为托管源并删除 File->Project Structure->Modules->Sources 中的应用程序控制器和视图源标志。然后重新编译。

适用于 IntelliJ Ultimate 12.1。{4|6}。使用命令行界面创建播放应用程序并使用play idea 生成项目文件。使用 Play 2.2.0。

【讨论】:

    【解决方案3】:

    文件 -> 项目结构

    在右侧窗格中选择来源

    添加源文件夹

    target/scala-XXX/classes_managed

    target/scala-XXX/src_managed/main

    【讨论】:

    【解决方案4】:

    这个问题是在一年前提出的,但是为了回答其他编码人员将来的查询,通过添加这样的“play.Routes”路径很容易解决这个问题

    public static Result javascriptRoutes() {
        response().setContentType("text/javascript");
        return ok(
                play.Routes.javascriptRouter("jsRoutes",
    
                        // Routes for Projects
                        controllers.routes.javascript.Projects.add(),
                        controllers.routes.javascript.Projects.delete(),
                        controllers.routes.javascript.Projects.rename(),
                        controllers.routes.javascript.Projects.addGroup()
                )
        );
    

    }

    确保您对类有正确的导入:

    import play.mvc.*;
    import play.data.*;
    

    【讨论】:

      【解决方案5】:

      对于 IntelliJ 14.1 和 Play 2.3.8,上述方法均无效,但来自 mailing list 的建议有效。 (几乎)公然抄袭:

      找到 target/scala-2.11/src_managed 和 target/scala-2.11/twirl 项目视图中的目录,然后右键单击并标记目录 作为 -> 生成的来源(根)

      我升级了 scala 版本,显然在较新版本的 IntelliJ 中添加了 Root 词。此外,您无法从“项目结构”窗口中选择此选项,该选项不可用。只能通过主窗口中的Project 窗格来实现。如果它拒绝被标记为Generated Sources,请尝试取消标记target 目录(将目录标记为 -> 取消标记)。

      【讨论】:

        【解决方案6】:

        我正在使用 Idea 14.1.4 社区版,我设法通过右键单击目标文件夹并将其标记为未排除来删除索引和路由未解决的错误。注意我使用命令行运行我的项目我在 ide 中找不到任何运行配置。

        【讨论】:

        • 如果您有新问题,请点击 按钮提出问题。如果您有足够的声誉,you may upvote 的问题。或者,将其“加注”为收藏夹,您将收到任何新答案的通知。
        【解决方案7】:

        对于使用 Play 2.4.x 或更高版本的人,Play 似乎不再为 src_managed 等中的 javascript 生成反向路由文件。

        相反,您需要将scala-2.xx/routes/main 目录包含为Sources

        【讨论】:

          【解决方案8】:

          我没有在我的 PLay 2.8 版本中找到这些文件夹,所以这是 IntelliJ 的问题,我找到了一个更简单的解决方案:

          https://stackoverflow.com/a/70339356/2367237

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-03-30
            • 1970-01-01
            • 2017-04-05
            • 1970-01-01
            • 1970-01-01
            • 2019-12-07
            • 2016-12-02
            • 2021-06-13
            相关资源
            最近更新 更多