猿问

从子类型到超类型的 ClassCastException(在 Scala 中)

我们只在一台开发机器上始终遇到一个奇怪的错误,对于其他机器它工作正常(我个人无法重现该问题):


Caused by: java.lang.ClassCastException: scala.collection.immutable.$colon$colon cannot be cast to scala.collection.Seq

    at scala.Option.map (Option.scala:163)

    at com.lightbend.lagom.maven.RunAllMojo.$anonfun$execute$15 (ServiceMojos.scala:402)

Seq根据https://www.scala-lang.org/api/2.12.0/scala/collection/immutable/$colon$colon.html::是( $colon$colon)的线性超类型。我们将 Lagom 1.6.0-M2 用于 Java DSL,以及 Scala 2.12。Java 版本:


openjdk version "1.8.0_212"

OpenJDK Runtime Environment Corretto-8.212.04.2 (build 1.8.0_212-b04)

OpenJDK 64-Bit Server VM Corretto-8.212.04.2 (build 25.212-b04, mixed mode)

它发生在 lagom 开发服务器引导期间。清除并重新下载 maven 存储库(尤其是 scala-lang 和 lagom deps)并没有解决这个问题,所以这可能不是由于文件损坏造成的。


我将我机器上的 Scala 罐子与坏机器上的 Scala 罐子进行了比较,它们是一样的。


什么会导致从子类型到超类型的 ClassCastException,我们应该从哪里开始调查这个问题?


皈依舞
浏览 106回答 1
1回答

SMILET

这是一个类加载器问题。核心问题是 Maven 插件使用了配置<extensions>true</extensions>,这不知何故搞乱了类加载器。
随时随地看视频慕课网APP

相关分类

Java
我要回答