使用Activator启动Play服务器时遇HTTP仓库访问拒绝,需改用HTTPS
Play服务器启动依赖解析问题:HTTP连接被拒绝,期望使用HTTPS
启动命令
我使用以下命令启动Play服务器:
activator -Dconfig.file=conf/prod.conf -Dhttp.port=9006 -Dhttps.port=9007 -jvm-debug 5005 run
错误日志
服务器启动后出现连接拒绝错误,关键日志片段如下:
[info] Set current project to ofe (in build file:/Users/shiva/br/work/src/analytics/frontend/ui/) [info] Updating {file:/Users/shiva/br/work/src/analytics/frontend/ui/}ofe... [info] Resolving com.typesafe.play#play-jdbc_2.10;2.2.0 ... [error] Server access Error: Connection refused url=http://repo.typesafe.com/typesafe/releases/com/typesafe/play/play-jdbc_2.10/2.2.0/play-jdbc_2.10-2.2.0.pom [error] Server access Error: Connection refused url=http://repo.typesafe.com/typesafe/releases/com/typesafe/play/play-jdbc_2.10/2.2.0/play-jdbc_2.10-2.2.0.jar [info] Resolving com.jolbox#bonecp-parent;0.8.0-rc1 ... [error] Server access Error: Connection refused url=http://repo.typesafe.com/typesafe/releases/com/jolbox/bonecp-parent/0.8.0-rc1/bonecp-parent-0.8.0-rc1.jar [error] Server access Error: Connection refused url=http://repo.typesafe.com/typesafe/releases/com/jolbox/bonecp-parent/0.8.0-rc1/bonecp-parent-0.8.0-rc1.jar [info] Resolving com.typesafe.play#play-java_2.10;2.2.0 ... [error] Server access Error: Connection refused url=http://repo.typesafe.com/typesafe/releases/com/typesafe/play/play-java_2.10/2.2.0/play-java_2.10-2.2.0.pom [error] Server access Error: Connection refused url=http://repo.typesafe.com/typesafe/releases/com/typesafe/play/play-java_2.10/2.2.0/play-java_2.10-2.2.0.jar ...
项目配置文件内容
build.sbt
libraryDependencies ++= Seq( javaJdbc, javaEbean, cache, "com.google.inject" % "guice" % "3.0" ) resolvers += "Maven Central Server" at "https://repo1.maven.org/maven2" resolvers += "Typesafe Server" at "https://repo.typesafe.com/typesafe/releases" play.Project.playJavaSettings seq(copyViewsSettings:_*)
project/plugins.sbt
// Comment to get more information during initialization logLevel := Level.Warn // The Typesafe repository resolvers ++= Seq( "Typesafe repository" at "https://repo.typesafe.com/typesafe/releases/", "Maven Repo" at "https://repo1.maven.org/maven2/" ) // Use the Play sbt plugin for Play projects addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.2.0") addSbtPlugin("com.typesafe.sbt" % "sbt-web" % "1.1.0")
环境信息与问题
- 使用sbt版本:0.13.18
- 已清理
~/.ivy2/cache目录 - 问题:明明在配置中指定使用HTTPS地址
https://repo.typesafe.com解析依赖,但实际启动时却尝试访问HTTP地址,导致连接拒绝。
解决方法
1. 强制全局/项目级仓库使用HTTPS
创建或修改sbt仓库配置文件:
- 全局生效:在用户目录下创建
~/.sbt/repositories文件 - 仅当前项目生效:在项目根目录的
project文件夹下创建repositories文件
文件内容如下:
[repositories] local maven-central typesafe-releases: https://repo.typesafe.com/typesafe/releases typesafe-ivy-releases: https://repo.typesafe.com/typesafe/ivy-releases, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
该配置会强制sbt使用HTTPS的Typesafe仓库,覆盖默认的HTTP配置。
2. 替换默认仓库列表
Play 2.2.x可能内置了HTTP的Typesafe仓库地址,会覆盖你追加的配置。修改build.sbt中的仓库配置,用:=完全替换默认列表:
resolvers := Seq( "Maven Central Server" at "https://repo1.maven.org/maven2", "Typesafe Server" at "https://repo.typesafe.com/typesafe/releases" )
注意:使用:=会清空所有默认仓库,只保留你指定的仓库;如果需要保留其他默认仓库,需手动添加。
3. 排查网络/代理问题
- 如果使用代理服务器,检查代理是否支持HTTPS访问,或者是否存在将HTTPS重定向到HTTP的规则
- 尝试关闭代理后重新运行启动命令
- 若需要代理,在启动命令中添加代理参数:
activator -Dhttp.proxyHost=你的代理地址 -Dhttp.proxyPort=代理端口 -Dhttps.proxyHost=你的代理地址 -Dhttps.proxyPort=代理端口 -Dconfig.file=conf/prod.conf -Dhttp.port=9006 -Dhttps.port=9007 -jvm-debug 5005 run
4. 升级版本(可选)
sbt 0.13.18和Play 2.2.0均为较旧版本,可能存在HTTPS仓库的兼容性问题。如果项目允许,可尝试:
- 升级sbt到0.13.x系列的最新版本
- 升级Play插件到兼容的新版本(注意版本间的兼容性)
内容的提问来源于stack exchange,提问作者Shiva Reddy
相关产品推荐
相关产品推荐

