Что я могу сделать, чтобы исправить ошибку «небезопасный символ» в Scala? - PullRequest
1 голос
/ 24 сентября 2019

Я написал библиотеку, которая предоставляет аннотации Java и код Scala.Я потребляю в Scala, работаю в IntelliJ

Если я не использую ни одну из своих аннотаций, все работает отлично.Если я использую аннотацию в моем потребляющем проекте, я получаю следующее исключение:

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.

Понимая, что это связано с каким-то коллизией версий, я перестроил свою библиотеку, заставляя JDK 1.8 источник / цель для встроенного кода в sbt, и переупаковал свою библиотеку:

  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, что соответствует тому, что я ожидаю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...