2

将我的一个项目升级到 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

由于它很难重现,而且它是一个内部项目,具有更多的内部依赖关系,这就是我所能提供的。

我的问题是:有人知道是什么原因造成的,我能做什么。或者,如果有人有想法如何进一步调试或尝试获取更多关于出错的信息。

4

1 回答 1

2

这最终可以通过将 java 从 11.0.8 升级到 11.0.9 (AdoptOpenJDK) 来解决。为什么以及如何工作?不知道。

于 2020-12-08T06:33:33.950 回答