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

Scalatra首次启动jetty报错not found: object scalate等问题求解

问题原因
  1. 版本适配差:《Scalatra In Action》教程配套的是较早的Scalatra 2.x早期版本,你通过g8生成的是新版Scalatra项目,核心架构变动较大,Scalate模板支持已经从核心库拆分,不会默认随Scalatra核心安装,需要手动引入依赖。
  2. 自定义栈类缺失:示例代码中控制器继承的ScalatraCmsStack是项目自定义的公共父特质,你未按照教程前置步骤创建该文件,因此编译器无法识别该类,连带父类中内置的get、contentType、params、ssp等方法和属性也全部无法识别。
解决步骤
  • 补全Scalate依赖
    打开项目根目录的build.sbt,在libraryDependencies配置块中添加Scalate扩展依赖,注意版本要和项目内已有的Scalatra核心依赖版本一致:
libraryDependencies ++= Seq(
  "org.scalatra" %% "scalatra-scalate" % "<你的Scalatra核心版本号>",
  "org.eclipse.jetty" % "jetty-webapp" % "9.4.44.v20210927" % "container;compile"
)
  • 创建自定义栈特质
    在src/main/scala/com/example/cms目录下新建ScalatraCmsStack.scala文件,写入以下内容:
package com.example.cms

import org.scalatra._
import scalate.ScalateSupport

trait ScalatraCmsStack extends ScalatraServlet with ScalateSupport
  • 检查控制器导入
    确认你的PagesController.scala顶部有正确的包声明和核心类导入:
package com.example.cms
import org.scalatra._
  • 重启服务
    回到sbt交互终端,先执行reload命令加载新依赖,再执行~jetty:start启动服务即可。

内容的提问来源于stack exchange,提问作者emalcolmb

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:36:02