Skip to content

sbt test hangs on UnsupportedClassVersionError #7429

@gaeljw

Description

@gaeljw

steps

Reproduction repository: https://github.com/gaeljw/sbt-test-hangs

  • clone the repo in local
  • make sure to use Java 11 (using jenv or any other way)
  • run sbt clean test

environment

sbt --version                      
sbt version in this project: 1.9.7
sbt script version: 1.9.4

java --version
openjdk 11.0.20 2023-07-18
OpenJDK Runtime Environment (Red_Hat-11.0.20.0.8-1.fc38) (build 11.0.20+8)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.20.0.8-1.fc38) (build 11.0.20+8, mixed mode, sharing)

problem

The commands hang forever:

sbt clean test
[info] welcome to sbt 1.9.7 (Red Hat, Inc. Java 11.0.20)
[info] loading settings for project global-plugins from plugins.sbt ...
[info] loading global plugins from /home/xxx/.sbt/1.0/plugins
[info] loading settings for project sbt-test-hangs-build from plugins.sbt ...
[info] loading project definition from /tmp/xxx/sbt-test-hangs/project
[info] loading settings for project root from build.sbt,version.sbt ...
[info]   __              __
[info]   \ \     ____   / /____ _ __  __
[info]    \ \   / __ \ / // __ `// / / /
[info]    / /  / /_/ // // /_/ // /_/ /
[info]   /_/  / .___//_/ \__,_/ \__, /
[info]       /_/               /____/
[info] 
[info] Version 2.8.20 running Java 11.0.20
[info] 
[info] Play is run entirely by the community. Please consider contributing and/or donating:
[info] https://www.playframework.com/sponsors
[info] 
[success] Total time: 0 s, completed 10 nov. 2023 à 13:38:32
[info] compiling 1 Scala source to /tmp/xxx/sbt-test-hangs/target/scala-2.13/test-classes ...
[error] Uncaught exception when running tests: java.lang.UnsupportedClassVersionError: au/com/dius/pact/provider/IProviderInfo has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 55.0
[error] sbt.ForkMain$ForkError: java.lang.UnsupportedClassVersionError: au/com/dius/pact/provider/IProviderInfo has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 55.0
[error] 	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
[error] 	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1022)
[error] 	at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
[error] 	at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:800)
[error] 	at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:698)
[error] 	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:621)
[error] 	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:579)
[error] 	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
[error] 	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:527)
[error] 	at java.base/java.lang.Class.forName0(Native Method)
[error] 	at java.base/java.lang.Class.forName(Class.java:398)
[error] 	at org.scalatest.tools.Framework$ScalaTestTask.loadSuiteClass(Framework.scala:408)
[error] 	at org.scalatest.tools.Framework$ScalaTestTask.suiteClass$lzycompute(Framework.scala:416)
[error] 	at org.scalatest.tools.Framework$ScalaTestTask.suiteClass(Framework.scala:416)
[error] 	at org.scalatest.tools.Framework$ScalaTestTask.accessible$lzycompute(Framework.scala:417)
[error] 	at org.scalatest.tools.Framework$ScalaTestTask.accessible(Framework.scala:417)
[error] 	at org.scalatest.tools.Framework$ScalaTestTask.shouldDiscover$lzycompute(Framework.scala:420)
[error] 	at org.scalatest.tools.Framework$ScalaTestTask.shouldDiscover(Framework.scala:419)
[error] 	at org.scalatest.tools.Framework$ScalaTestRunner.$anonfun$tasks$2(Framework.scala:752)
[error] 	at org.scalatest.tools.Framework$ScalaTestRunner.$anonfun$tasks$2$adapted(Framework.scala:750)
[error] 	at scala.collection.ArrayOps$WithFilter.map(ArrayOps.scala:90)
[error] 	at org.scalatest.tools.Framework$ScalaTestRunner.tasks(Framework.scala:750)
[error] 	at sbt.ForkMain$Run.runTests(ForkMain.java:345)
[error] 	at sbt.ForkMain$Run.run(ForkMain.java:192)
[error] 	at sbt.ForkMain$Run.access$100(ForkMain.java:187)
[error] 	at sbt.ForkMain.main(ForkMain.java:178)
[error] 	at sbt.ForkMain.main(ForkMain.java:164)
Warning: Unable to read from client, please check on client for further details of the problem.

image

Note that I'm well aware of the runtime error due to using Java11 with class files compiled for Java 17.

My concern is that sbt process just hangs doing nothing until stopped with a Ctrl+C.

expectation

I expect the command to fail but exit.

notes

I'm not entirely sure if this is relevant but I ran VisualVM to try to see what the process was doing and the only thread doing something was the following:

image

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions