将我的一个项目升级到 scala 2.13.4 后,出现以下错误:
[error] java.lang.IllegalAccessError: Class 'scala.tools.nsc.transform.patmat.PatternExpansion$ExtractorAlignment' no access to: class 'scala.collection.immutable.LazyList$State'
[error] at java.base/java.lang.invoke.MethodHandle.sendResolveMethodHandle(MethodHandle.java:1237)
[error] at java.base/java.lang.invoke.MethodHandle.getCPMethodHandleAt(Native Method)
[error] at java.base/java.lang.invoke.MethodHandle.getAdditionalBsmArg(MethodHandle.java:935)
[error] at java.base/java.lang.invoke.MethodHandle.resolveInvokeDynamic(MethodHandle.java:1084)
[error] at scala.tools.nsc.transform.patmat.PatternExpansion$ExtractorAlignment.fromProductSelectors(PatternExpansion.scala:166)
(完整的堆栈跟踪在这里https://gist.github.com/froth/f4819191644ef6ced0be682ad55f8fa0因为它很长)
我没有更改代码库中的任何内容,也没有在我的项目中积极使用 LazyList。让事情更加复杂:它在我的机器上工作并且在管道中失败(相同的 java 版本,相同的 sbt 版本(sbt 1.4.4(AdoptOpenJDK Java 11.0.8)),我清除了所有缓存)。
这是一个多项目构建,顶层 build.sbt 看起来像https://gist.github.com/froth/516c4ea6f8bd98ed87e6a8cadaa117d1,在子项目中如下:https://gist.github.com/froth/03af73900724f47154a0b2477edb47ca
由于它很难重现,而且它是一个内部项目,具有更多的内部依赖关系,这就是我所能提供的。
我的问题是:有人知道是什么原因造成的,我能做什么。或者,如果有人有想法如何进一步调试或尝试获取更多关于出错的信息。