Play Framework路由无法找到Java方法的问题排查
解决Play Framework 2 Java项目路由错误:value index is not a member of object controllers.Application
这个问题的核心是Play Java和Scala的路由语法存在差异,你之前用Scala写的路由写法不适用于Java控制器,加上修改插件后可能没清理缓存,导致错误持续存在。下面是具体的解决步骤:
1. 修正routes文件的语法
Play Java中,路由指向控制器方法时不需要加括号()——因为Java控制器是普通类(而非Scala的单例对象),Play会自动负责实例化控制器并调用方法。修改你的routes文件如下:
# Home page GET / controllers.Application.index # Map static resources from the /public folder to the /assets URL path GET /assets/*file controllers.Assets.at(path="/public", file)
2. 确认build.sbt的插件配置正确
确保你的build.sbt中启用的是Play Java插件,而非Scala插件,配置示例如下:
name := """your-project-name""" version := "1.0-SNAPSHOT" lazy val root = (project in file(".")).enablePlugins(PlayJava) scalaVersion := "2.13.10" // 请匹配你使用的Play版本对应的Scala版本
3. 清理编译缓存并重新运行项目
旧的编译产物可能残留导致修改不生效,执行以下命令清理缓存后重启项目:
sbt clean run
完成以上步骤后,访问localhost:9000应该就能正常加载页面了,此时路由可以正确识别Java控制器的index方法。
内容的提问来源于stack exchange,提问作者Daniel Calderon Mori
相关产品推荐
相关产品推荐

