Scala/Play无法找到自定义库及https.port配置疑问求助
Scala类路径与配置属性问题排查
问题背景
- 报错信息:
play.api.PlayException: Execution exception[[InjectionException: Injection error, interface my.package.ServiceLoggerBuilder not found]]
- 已在
build.sbt中引入依赖:
libraryDependencies ++= Seq( "my.package" %% "service-common" % "2.0.23" )
- 确认依赖jar存在于Coursier缓存目录:
/home/myuser/.cache/coursier/v1/https/ourdomain.amazonaws.com/maven/common/my/package/service-common_3/2.0.23 - 已验证sbt输出的类路径包含该jar,但报错依旧;同时发现需要
https.port配置属性,疑问:该属性需手动设置还是从启动的pekko-http服务器获取?
问题排查与解答
针对ServiceLoggerBuilder找不到的问题
- 检查Scala版本兼容性:缓存中的jar是
service-common_3(对应Scala 3版本),确认你的项目Scala版本是否为3.x。如果项目用的是Scala 2.x,要么确保%%能自动匹配对应版本的依赖,要么手动指定如service-common_2.13这类对应Scala 2版本的jar包,跨版本会导致类加载失败。 - 验证jar包内容:直接解压缓存目录下的jar文件,查看是否存在
my/package/ServiceLoggerBuilder.class文件,确认该trait确实被打包进了依赖库。 - 刷新依赖缓存:执行
sbt clean reload update命令,强制清理旧缓存并重新拉取依赖,避免缓存损坏导致的类加载异常。
针对https.port配置属性的问题
- 若pekko-http服务器是手动代码启动:需要手动在配置文件(如
application.conf)中设置https.port,或者启动时通过命令行参数(如-Dhttps.port=443)传递,服务器会读取该配置绑定HTTPS端口。 - 若pekko-http是集成在Play框架中启动:Play会自动读取
application.conf里的https.port配置来启动HTTPS服务,无需手动从服务器获取,只需确保配置文件中正确设置该属性即可。
内容的提问来源于stack exchange,提问作者david sundström
相关产品推荐
相关产品推荐

