jME 3.10.0-beta1
jMonkeyEngine Hub
June 4, 2026
GraalVM is fully supported, as long as you configure reflection metadata properly.
The good news is that the engine comes with a gradle plugin that does that automatically for jme classes, your app should have a build.gradle with this
plugins {
id 'application'
id 'org.graalvm.buildtools.native' version '1.1.0'
id 'org.jmonkeyengine.nativeimage'
}
application {
mainClass = 'com.example.MyGame'
}
graalvmNative {
binaries {
named('main') {
imageName = 'my-game'
mainClass = 'com.example.MyGame'
project.ext.jmeApplyDefaultNativeImageResourceSettings(delegate)
}
}
}
and if you use reflection directly in your app, you can add additional classes and annotation by specifying
ext.jmeNativeImageAdditionalTargetTypes = [
'com.example.classAccessedWithReflection1',
'com.example.classAccessedWithReflection2',
'com.example.classAccessedWithReflection3'
]
ext.jmeNativeImageAdditionalTargetAnnotations = [
'com.example.AnnotationAccessedWithReflection'
]
before graalvmNative.
Or you can use the usual graalvm tracing agent and make it autogenerate the metadata.
Discussion in the ATmosphere