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

Docker环境下Play Framework项目activator clean执行失败求助

Docker环境下Play Framework项目执行activator clean失败

我是Scala和sbt新手,在Docker环境构建Play Framework项目时,执行activator clean命令失败,不清楚问题出在哪,也不知道报错里的http仓库地址来源。

报错信息

#25 7.062 [error] Server access Error: Unexpected end of file from server url=http://repo.typesafe.com/typesafe/ivy-releases/com.typesafe.play/sbt-fork-run-plugin/scala_2.10/sbt_0.13/2.3.10/ivys/ivy.xml
#25 7.851 [error] Server access Error: Unexpected end of file from server url=http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.typesafe.play/sbt-fork-run-plugin/scala_2.10/sbt_0.13/2.3.10/ivys/ivy.xml
#25 18.62 [error] Server access Error: Unexpected end of file from server url=http://repo.typesafe.com/typesafe/ivy-releases/com.typesafe.play/sbt-fork-run-protocol_2.10/2.3.10/ivys/ivy.xml
#25 20.98 [error] Server access Error: Unexpected end of file from server url=http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.typesafe.play/sbt-fork-run-protocol_2.10/2.3.10/ivys/ivy.xml
#25 26.31 [error] Server access Error: Unexpected end of file from server url=http://repo.typesafe.com/typesafe/ivy-releases/com.typesafe.play/sbt-fork-run-protocol_2.10/2.3.10/jars/sbt-fork-run-protocol_2.10.jar
#25 27.20 [error] Server access Error: Unexpected end of file from server url=http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.typesafe.play/sbt-fork-run-protocol_2.10/2.3.10/jars/sbt-fork-run-protocol_2.10.jar
#25 32.55 [error] Server access Error: Unexpected end of file from server url=http://repo.typesafe.com/typesafe/ivy-releases/com.typesafe.play/sbt-run-support_2.10/2.3.10/ivys/ivy.xml
#25 33.37 [error] Server access Error: Unexpected end of file from server url=http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.typesafe.play/sbt-run-support_2.10/2.3.10/ivys/ivy.xml
#25 37.00 [error] Server access Error: Unexpected end of file from server url=http://repo.typesafe.com/typesafe/ivy-releases/com.typesafe.play/sbt-run-support_2.10/2.3.10/jars/sbt-run-support_2.10.jar
#25 37.88 [error] Server access Error: Unexpected end of file from server url=http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.typesafe.play/sbt-run-support_2.10/2.3.10/jars/sbt-run-support_2.10.jar
....
#25 1301.1 [warn]   [NOT FOUND  ] org.apache.commons#commons-compress;1.7!commons-compress.jar (2ms)
#25 1301.1 [warn] ==== activator-launcher-local: tried
#25 1301.1 [warn]   file:/usr/local/activator-dist-1.3.12/repository/org.apache.commons/commons-compress/1.7/jars/commons-compress.jar
#25 1301.1 [warn]   [NOT FOUND  ] org.tukaani#xz;1.4!xz.jar (0ms)
#25 1301.1 [warn] ==== activator-launcher-local: tried
#25 1301.1 [warn]   file:/usr/local/activator-dist-1.3.12/repository/org.tukaani/xz/1.4/jars/xz.jar
#25 1349.6 [warn]   ::::::::::::::::::::::::::::::::::::::::::::::
#25 1349.6 [warn]   ::              FAILED DOWNLOADS            ::
#25 1349.6 [warn]   :: ^ see resolution messages for details  ^ ::
#25 1349.6 [warn]   ::::::::::::::::::::::::::::::::::::::::::::::
#25 1349.6 [warn]   :: org.apache.commons#commons-compress;1.7!commons-compress.jar
#25 1349.6 [warn]   :: org.tukaani#xz;1.4!xz.jar
#25 1349.6 [warn]   ::::::::::::::::::::::::::::::::::::::::::::::
#25 1349.9 sbt.ResolveException: download failed: org.apache.commons#commons-compress;1.7!commons-compress.jar
#25 1349.9 download failed: org.tukaani#xz;1.4!xz.jar
#25 1349.9  at sbt.IvyActions$.sbt$IvyActions$$resolve(IvyActions.scala:217)
#25 1349.9  at sbt.IvyActions$$anonfun$update$1.apply(IvyActions.scala:126)
#25 1349.9  at sbt.IvyActions$$anonfun$update$1.apply(IvyActions.scala:125)
#25 1349.9  at sbt.IvySbt$Module$$anonfun$withModule$1.apply(Ivy.scala:115)
#25 1349.9  at sbt.IvySbt$Module$$anonfun$withModule$1.apply(Ivy.scala:115)
#25 1349.9  at sbt.IvySbt$$anonfun$withIvy$1.apply(Ivy.scala:103)
#25 1349.9  at sbt.IvySbt.sbt$IvySbt$$action$1(Ivy.scala:48)
#25 1349.9  at sbt.IvySbt$$anon$3.call(Ivy.scala:57)
#25 1349.9  at xsbt.boot.Locks$GlobalLock.withChannel$1(Locks.scala:93)
#25 1349.9  at xsbt.boot.Locks$GlobalLock.xsbt$boot$Locks$GlobalLock$$withChannelRetries$1(Locks.scala:78)
#25 1349.9  at xsbt.boot.Locks$GlobalLock$$anonfun$withFileLock$1.apply(Locks.scala:97)
#25 1349.9  at xsbt.boot.Using$.withResource(Using.scala:10)
#25 1349.9  at xsbt.boot.Using$.apply(Using.scala:9)
#25 1349.9  at xsbt.boot.Locks$GlobalLock.ignoringDeadlockAvoided(Locks.scala:58)
#25 1349.9  at xsbt.boot.Locks$GlobalLock.withLock(Locks.scala:48)
#25 1349.9  at xsbt.boot.Locks$.apply0(Locks.scala:31)
#25 1349.9  at xsbt.boot.Locks$.apply(Locks.scala:28)
#25 1349.9  at sbt.IvySbt.withDefaultLogger(Ivy.scala:57)
#25 1349.9  at sbt.IvySbt.withIvy(Ivy.scala:98)
#25 1349.9  at sbt.IvySbt.withIvy(Ivy.scala:94)
#25 1349.9  at sbt.IvySbt$Module.withModule(Ivy.scala:115)
#25 1349.9  at sbt.IvyActions$.update(IvyActions.scala:125)
#25 1349.9  at sbt.Classpaths$$anonfun$sbt$Classpaths$$work$1$1.apply(Defaults.scala:1223)
#25 1349.9  at sbt.Classpaths$$anonfun$sbt$Classpaths$$work$1$1.apply(Defaults.scala:1221)
#25 1349.9  at sbt.Classpaths$$anonfun$doWork$1$1$$anonfun$74.apply(Defaults.scala:1244)
#25 1349.9  at sbt.Classpaths$$anonfun$doWork$1$1$$anonfun$74.apply(Defaults.scala:1242)
#25 1349.9  at sbt.Tracked$$anonfun$lastOutput$1.apply(Tracked.scala:35)
#25 1349.9  at sbt.Classpaths$$anonfun$doWork$1$1.apply(Defaults.scala:1246)
#25 1349.9  at sbt.Classpaths$$anonfun$doWork$1$1.apply(Defaults.scala:1241)
#25 1349.9  at sbt.Tracked$$anonfun$inputChanged$1.apply(Tracked.scala:45)
#25 1349.9  at sbt.Classpaths$.cachedUpdate(Defaults.scala:1249)
#25 1349.9  at sbt.Classpaths$$anonfun$updateTask$1.apply(Defaults.scala:1214)
#25 1349.9  at sbt.Classpaths$$anonfun$updateTask$1.apply(Defaults.scala:1192)
#25 1349.9  at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
#25 1349.9  at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:42)
#25 1349.9  at sbt.std.Transform$$anon$4.work(System.scala:64)
#25 1349.9  at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
#25 1349.9  at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
#25 1349.9  at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:18)
#25 1349.9  at sbt.Execute.work(Execute.scala:244)
#25 1349.9  at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
#25 1349.9  at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
#25 1349.9  at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:160)
#25 1349.9  at sbt.CompletionService$$anon$2.call(CompletionService.scala:30)
#25 1349.9  at java.util.concurrent.FutureTask.run(FutureTask.java:266)
#25 1349.9  at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
#25 1349.9  at java.util.concurrent.FutureTask.run(FutureTask.java:266)
#25 1349.9  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
#25 1349.9  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
#25 1349.9  at java.lang.Thread.run(Thread.java:750)
#25 1349.9 [error] (*:update) sbt.ResolveException: download failed: org.apache.commons#commons-compress;1.7!commons-compress.jar
#25 1349.9 [error] download failed: org.tukaani#xz;1.4!xz.jar
#25 1350.0 Project loading failed: (r)etry, (q)uit, (l)ast, or (i)gnore? 

plugins.sbt文件内容

// Comment to get more information during initialization
logLevel := Level.Warn

// The Typesafe repository
resolvers += "Local Maven Repository" at "file:///"+Path.userHome.absolutePath+"/.m2/repository"

resolvers += "Typesafe repository" at "https://repo.typesafe.com/typesafe/releases/"

resolvers += "sonatype-releases" at "https://oss.sonatype.org/content/repositories/releases/"

// Use the Play sbt plugin for Play projects
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.3.10")

addSbtPlugin("com.typesafe.sbt" % "sbt-scalariform" % "1.2.0")

addSbtPlugin("org.scalastyle" %% "scalastyle-sbt-plugin" % "0.3.2")

~/.sbt仓库配置(已复制到Dockerfile)

[repositories]
  local
  activator-launcher-local: file://${activator.local.repository-${activator.home-${user.home}/.activator}/repository}, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
  activator-local: file://${activator.local.repository-/Users/ishaankanwar/br/tools/activator-dist-1.3.12/repository}, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
  sbt-releases-repo: https://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
  sbt-plugins-repo: https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
  maven-central: https://repo1.maven.org/maven2/
  typesafe-releases: https://repo.typesafe.com/typesafe/releases
  typesafe-ivy-releasez: https://repo.typesafe.com/typesafe/ivy-releases, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]

问题分析与解决方法

问题根源

  1. HTTP仓库地址来源:报错里的HTTP仓库地址来自你复制到Docker的~/.sbt仓库配置,其中sbt-releases-repo和sbt-plugins-repo原本使用HTTP协议,但现在这些仓库已强制HTTPS访问,HTTP请求会被截断,导致"Unexpected end of file"错误。
  2. 无效本地仓库:activator-local配置里的路径是你本地Mac的路径(/Users/ishaankanwar/...),在Docker容器中不存在,会导致无效查找并浪费时间。
  3. 依赖下载失败:commons-compress和xz依赖找不到,是因为本地仓库没有,且配置里的仓库访问异常,无法从远程拉取。

解决步骤

  1. 修复仓库协议:修改~/.sbt仓库配置中的HTTP地址为HTTPS(如果还没改):
    • 将sbt-releases-repo的http://repo.typesafe.com/typesafe/ivy-releases/改为https://repo.typesafe.com/typesafe/ivy-releases/
    • 将sbt-plugins-repo的http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/改为https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/
  2. 移除无效本地仓库:删除activator-local这一行,避免在Docker容器中查找不存在的路径。
  3. 调整仓库优先级:确保maven-central在仓库列表中靠前,让sbt优先从中央仓库拉取通用依赖(比如commons-compress和xz)。
  4. Docker构建优化:在Dockerfile中先执行activator update预下载所有依赖,再执行activator clean,避免构建时重复下载依赖。

修改后的仓库配置示例:

[repositories]
  local
  activator-launcher-local: file://${activator.local.repository-${activator.home-${user.home}/.activator}/repository}, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion
相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 00:15:34