scalameta / svm-subs

GraalVM native-image substitutions for Scala

Version Matrix

GraalVM native-image substitutions for Scala

This project exists to fix the following errors when running Scala applications with native-image

Error: Invoke with MethodHandle argument could not be reduced to at most a single call or single field access. The method handle must be a compile time constant, e.g., be loaded from a `static final` field. Method that contains the method handle invocation: java.lang.invoke.MethodHandle.invokeBasic()
To diagnose the issue, you can add the option --report-unsupported-elements-at-runtime. The error is then reported at run time when the invoke is executed.
	at parsing java.lang.invoke.LambdaForm$MH/1971838936.invoke_MT(LambdaForm$MH)
Call path from entry point to java.lang.invoke.LambdaForm$MH/1971838936.invoke_MT(Object, Object): 
	at java.lang.invoke.LambdaForm$MH/1971838936.invoke_MT(LambdaForm$MH)
	at scala.collection.immutable.VM.releaseFence(

To use this project, add to build.sbt

  // build.sbt
  lazy val myNativeImageProject = project
+     libraryDependencies += "org.scalameta" %% "svm-subs" % "GRAALVM_VERSION" % "compile-internal"

Replace GRAALVM_VERSION with a GraalVM version like "20.2.0". See releases for what GraalVM versions are supported.

That's it. The next time you generate a native image you should not get this error anymore.

Related issues: