为什么Scalatest现在失败与Java模块有关?

问题描述 投票:0回答:1

给这堂课

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模块功能有关:How many unnamed modules are created in 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类的代码没有改变,但我一直在包层次结构中移动。

有没有人对问题可能是什么或我应该调查的其他事情有任何想法?

scala maven scalatest java-module
1个回答
1
投票

在其他地方发现问题。第一条消息具有误导性,但在堆栈跟踪中走得更远,显示出问题所在。这是一个铸造问题,但与模块无关。

© www.soinside.com 2019 - 2024. All rights reserved.