Closed eregon closed 1 year ago
FWIW I also tried the same but without SpringBoot on this branch: https://github.com/eregon/truffleruby-embed-spring/tree/without-spring And that works for both js and ruby.
So somehow the combination Native Image + SpringBoot + GraalVM language seems to cause the above issue.
Hi, thanks Benoit, we'll take a look into this shortly
Hi, same error in spring boot when adding --language:js without it application starts graalvm 22.3.0
plugins {
id("org.springframework.boot") version "3.0.1"
id("io.spring.dependency-management") version "1.1.0"
id("org.graalvm.buildtools.native") version "0.9.19"
}
graalvmNative {
binaries {
named("main") {
buildArgs.add("--language:js")
}
}
}
Tracked internally on GR 43212
The problem is that using field value transformers (a feature that Spring relies on) is not working with ParseOnce
(a feature that is enabled by default and that Spring also depends on). Since Truffle (used by the --language:js
) doesn't currently support ParseOnce
, it is disabling it automatically. So combining Spring with a Truffle language is currently not supported. ParseOnce
will become the only supported mode as soon as work for Truffle to support it is completed.
For reasons why Truffle languages are not supported in Spring yet please see https://github.com/oracle/graal/issues/4473. I'm working on a PR to have a better error message.
This PR https://github.com/oracle/graal/pull/5781 explicitly disables ParseOnce
when field value transformers for fields of run time initialized classes are encountered.
Describe the issue This error happens, when using
--language:js
or--language:ruby
. Without--language:js
/--language:ruby
it builds fine (and fails at runtime due to the missing language). Found by @joshlong who wants to embed Ruby in a native image.Sometimes it looks slightly different but it seems the same thing:
or
Steps to reproduce the issue Please include both build steps as well as run steps
export JAVA_HOME=/path/to/graalvm
Describe GraalVM and your environment: