升级Scala库至Scala3时jlink构建缺失传递依赖求助
Scala3升级后jlink构建缺失传递依赖排查
我正在把一个Scala库升级到Scala3,但在jlink构建过程中遇到了缺失传递依赖的问题,构建失败提示如下:
[error] Dependee packages not found in classpath. You can use jlinkIgnoreMissingDependency to silence these.
[error] org.apache.pekko.http.scaladsl.model -> org.apache.pekko.http.javadsl.model
[error] org.apache.pekko.stream.serialization -> org.apache.pekko.stream
[error] scala.quoted -> scala
[error] scala.quoted.runtime -> scala
[error] stack trace is suppressed; run last appServer / jlinkModules for the full output
[error] (appServer / jlinkModules) Missing package dependencies
虽然可以通过jlinkIgnoreMissingDependency配置忽略这些问题,但这不是合理的实践,想明确当前场景下缺失的具体传递依赖是什么。
缺失的具体传递依赖分析:
- org.apache.pekko.http.javadsl.model:这是Pekko HTTP的Java DSL模块,项目引入了Pekko HTTP的Scala DSL(
pekko-http-scaladsl),但缺少对应的Java DSL依赖包(pekko-http-javadsl),需要在构建配置中添加该依赖。 - org.apache.pekko.stream:这是Pekko Stream的核心模块,
org.apache.pekko.stream.serialization属于该模块的子包,说明项目可能未正确引入pekko-stream核心依赖,或者依赖版本与Pekko HTTP的版本不匹配,导致该包未被纳入类路径。 - scala.quoted 与 scala.quoted.runtime:这两个包属于Scala3标准库的Quoted API部分,归属
scala-library模块。出现该问题通常是因为jlink构建时未将Scala3的标准库模块正确包含进模块路径,或者所使用的Scala3版本的模块定义存在缺失,需要确保scala-library被添加到jlink的模块集合中。
内容的提问来源于stack exchange,提问作者Chris Stewart
相关产品推荐
相关产品推荐

