SBT测试中的奇怪异常

cod*_*tsu 1 scala sbt scalatest

我正面临 SBT(版本 0.13.9)的问题。我的 ScalaTest 测试之一失败了不确定性EOFException

堆栈跟踪:

Exception in thread "Thread-155" Exception in thread "Thread-159" java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2601)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1319)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
at sbt.React.react(ForkTests.scala:114)
at sbt.ForkTests$$anonfun$mainTestTask$1$Acceptor$2$.run(ForkTests.scala:74)
at java.lang.Thread.run(Thread.java:745)

java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2601)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1319)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
at org.scalatest.tools.Framework$ScalaTestRunner$Skeleton$1$React.react(Framework.scala:953)
at org.scalatest.tools.Framework$ScalaTestRunner$Skeleton$1.run(Framework.scala:942)
at java.lang.Thread.run(Thread.java:745)

sbt.ForkMain 59974 failed with exit code 134
Run Code Online (Sandbox Code Playgroud)

我没有看到任何 JVM 日志或线程转储。

Fra*_*cho 8

几乎可以肯定,这与sbt.ForkMain在某些 linux 发行版中调用时 Java 类路径太长有关。为了避免这种情况,我添加了

javaOptions in Test ++= Seq("-Xms1G","-XX:+CMSClassUnloadingEnabled","-XX:+UseConcMarkSweepGC")
Run Code Online (Sandbox Code Playgroud)

build.sbt文件。我认为这CMSClassUnloadingEnabled是魔法发生的地方。