Плагин sbt-jacoco не работает с Java11 и выдает ошибку инструментального класса - PullRequest
1 голос
/ 25 мая 2020

Я обновил java версию приложения scala, которое использует sbt-jacoco плагин для запуска и проверки покрытия scalatest. После обновления Java8 до Java11 я начал получать ошибку, которая упомянута ниже, но она отлично работала с Java8.

[error] java.io.IOException: Error while instrumenting class MonthTimeTrigger.class.
[error]         at org.jacoco.core.instr.Instrumenter.instrumentError(Instrumenter.java:166)
[error]         at org.jacoco.core.instr.Instrumenter.instrument(Instrumenter.java:117)
[error]         at org.jacoco.core.instr.Instrumenter.instrument(Instrumenter.java:136)

Примечание: Вышеупомянутая ошибка возникала всякий раз, когда я использовал любой код Java в приложении Scala и попробуйте запустить sbt jacoco.

текущая scala среда приложения

  • Версия SBT: 1.2.8
  • Версия плагина SBT-Jacoco: 3.1.0
  • масштабная версия: 3.0.0
  • Scala версия (и): 2.12 .11
  • Java версия: 11

1 Ответ

0 голосов
/ 25 мая 2020

Я нашел решение только после некоторого исследования. И проблема в самом плагине sbt-jacoco, поскольку он не поддерживает java10 и далее.

Они (sbt-jacoco) нашли обходной путь для этой проблемы и, вероятно, исправят эти вещи в выпуске 4.0.

На данный момент обходным путем является переопределение некоторых зависимостей jacoco в либо plugins.sbt, либо build.sbt:

// plugins.sbt
val jacocoVersion = "0.8.5"

dependencyOverrides ++= Seq(
  "org.jacoco" % "org.jacoco.core" % jacocoVersion,
  "org.jacoco" % "org.jacoco.report" % jacocoVersion,
  "org.jacoco" % "org.jacoco.agent" % jacocoVersion)
// build.sbt
val jacocoVersion = "0.8.5"

dependencyOverrides ++= Seq(
  "org.jacoco" % "org.jacoco.core" % jacocoVersion % Test,
  "org.jacoco" % "org.jacoco.report" % jacocoVersion % Test,
  "org.jacoco" % "org.jacoco.agent" % jacocoVersion % Test)

Примечание: Даже если вы переопределите только org.jacoco.core, будет работать.

...