Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法解析IntelliJ中的反向路由方法_Java_Intellij Idea_Playframework 2.0 - Fatal编程技术网

Java 无法解析IntelliJ中的反向路由方法

Java 无法解析IntelliJ中的反向路由方法,java,intellij-idea,playframework-2.0,Java,Intellij Idea,Playframework 2.0,我正在学习一个play framework教程,但每当我尝试使用反向路由时,都会遇到编译错误。首先, public static Result javascriptRoutes() { response().setContentType("text/javascript"); return ok( Routes.javascriptRouter("jsRoutes", controllers.routes.javascript.Projec

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

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已经得到了定义的方法。

我遇到了同样的问题,并在这里找到了解决方案:

简言之:

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

从@Markus Kittig提供的链接中提取。伟大的临时修复

简介: 将target/scala XXX添加为托管源,并删除文件->项目结构->模块->源中的应用程序控制器和视图源标志。然后重新编译


关于IntelliJ Ultimate 12.1.{4|6}的工作。使用命令行界面创建播放应用程序,并使用
playidea
生成项目文件。使用播放2.2.0。

文件->项目结构

在右窗格中选择源

添加源文件夹

目标/scala XXX/管理的类


target/scala XXX/src_managed/main

这个问题是一年前提出的,但为了回答其他编码人员将来的查询,可以通过添加这样的“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.*;

对于IntelliJ 14.1和Play 2.3.8,上面的任何一项都不起作用,但是来自此的建议起了作用。(几乎)公然抄袭:

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


我升级了scala版本,显然在IntelliJ的较新版本中添加了根单词。此外,无法从“项目结构”窗口中选择此选项,该选项不可用。只能通过主窗口中的
项目
窗格进行此操作。如果拒绝将其标记为
生成的源
,请尝试取消标记
目标
目录(将目录标记为->取消标记)

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

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


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

似乎没有定义这样的方法。我不确定您是否只是一个聪明的傻瓜,但我编辑了我的问题以包括routes文件的一部分。此外,我的应用程序还有一个索引方法。我知道,因为它会呈现主页。请链接此代码的播放教程。这是本教程的第六部分。相关部分位于顶部。我没有问题,首先尝试忽略错误,在控制台上运行
play compile
,然后再次检查IntelliJ。此外,还有一条建议:在你的评论中的某个地方写上@nkr,这样我就会收到你回复的通知。非常感谢!我首先运行
playidea
,然后创建文件夹,编译错误就消失得无影无踪了。不确定顺序是否重要。这通常是正确的答案,但有几点需要澄清:-在/app/controllers下添加'javascript'和'ref'文件夹-将'play'命令替换为'activator'。我的操作顺序是1)添加目录,2)activator想法,3)activator compile在IntelliJ中执行“重建”需要再次运行“activator compile”。烦人。实际上,您应该将javascript和ref dirs添加到target/scala xxx/src_managed/main/controllers。如果您有新问题,请单击按钮询问。如果你有足够的声誉,问题就来了。或者,“星”它作为一个最喜欢的,你会被通知任何新的答案。为我工作。在这个对目标目录的响应中生成了类似的问题和解决方案,对吗?那么,每次清理项目时都会撤消此修复吗?