如何解决Scala中的“不安全符号”错误?

时间:2019-09-24 16:08:47

标签: scala intellij-idea

我写了一个提供Java注释和Scala代码的库。我正在使用IntelliJ中运行的Scala进行消费

如果我不使用任何注释,则一切正常。如果在使用中的项目中使用注释,则会出现以下异常:

Exception in thread "main" java.lang.RuntimeException: error reading Scala signature of co.blocke.blog.PayLoad: unsafe symbol Change (child of package scalajack) in runtime reflection universe
    at scala.reflect.internal.pickling.UnPickler.unpickle(UnPickler.scala:51)
...

如果我从命令行运行,在类路径中提供我的库,那么一切都很好-没有错误。它只会在IntelliJ内部爆炸。

弄清楚这与某种版本冲突有关,我重新构建了我的库,迫使sbt中的已构建代码使用JDK 1.8源/目标,并重新包装了我的库:

  javacOptions ++= Seq("-source", "1.8", "-target", "1.8"),
  scalacOptions ++= Seq("-target:jvm-1.8", "-language:_"),

我用十六进制编辑器查看了构建的类文件,并确认它确实是为JVM 1.8构建的(确实如此)。

这不能解决问题。我将此添加到我的消耗项目中,以确认正在运行哪个JVM:

  println("Scala: " + scala.util.Properties.versionString)
  println("Java : " + System.getProperty("java.version"))

这显示了Scala 2.12.8和Java 1.8,符合我的期望。

0 个答案:

没有答案