You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:34:34