Почему отказ Scalatest теперь связан с Java-модулями? - PullRequest
0 голосов
/ 14 февраля 2019

Дайте этот класс

final case class Score(val value: BigInt, val random: Long = randomLong)
  extends Comparable[Score] {

  override def compareTo(that: Score): Int = {
    if (this.value < that.value) -1
    else if (this.value > that.value) 1
    else if (this.random < that.random) -1
    else if (this.random > that.random) 1
    else 0
  }

  override def equals(obj: _root_.scala.Any): Boolean = {
    val that = obj.asInstanceOf[Score] // (package.scala:48)
    this.value == that.value && this.random == that.random
  }
}

Все компилируется правильно.Когда я запускал свои юнит-тесты, это работало отлично несколько дней назад.Я не менял этот код в течение нескольких недель, и все мои тесты работали нормально, в частности тесты, которые выполняли этот код.Но теперь, когда я запускаю свои юнит-тесты, я получаю

class java.lang.Integer cannot be cast to class net.kolotyluk.leaderboard.scorekeeping.package$Score (java.lang.Integer is in module java.base of loader 'bootstrap'; net.kolotyluk.leaderboard.scorekeeping.package$Score is in unnamed module of loader 'app')
java.lang.ClassCastException: class java.lang.Integer cannot be cast to class net.kolotyluk.leaderboard.scorekeeping.package$Score (java.lang.Integer is in module java.base of loader 'bootstrap'; net.kolotyluk.leaderboard.scorekeeping.package$Score is in unnamed module of loader 'app')
    at net.kolotyluk.leaderboard.scorekeeping.package$Score.equals(package.scala:48)

Очевидно, что-то изменилось, но я не уверен, что именно.

Проблема, похоже, связана с функцией модулей Java 9: ​​ Сколько неназванных модулей создано в Java 9?

> java -version
java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)

Мой JDK не изменился.Возможно, некоторые версии моих зависимостей maven изменились.Хотя код для моего класса Score не изменился, я перемещал вещи в иерархии пакетов.

Есть ли у кого-нибудь какие-либо идеи относительно того, в чем еще может быть проблема, или других вещей, которые я должен исследовать?

1 Ответ

0 голосов
/ 14 февраля 2019

Нашел проблему в другом месте.Первое сообщение вводило в заблуждение, но дальнейшее отслеживание стека показало, в чем проблема.Это была проблема приведения, но не имела ничего общего с модулями.

...