Skip to content

[Native Image] MissingReflectionRegistrationError on application main class, which is registered in reachability-metedata.json #11228

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
1 of 2 tasks
jerry-apl opened this issue May 20, 2025 · 2 comments
Assignees

Comments

@jerry-apl
Copy link

jerry-apl commented May 20, 2025

Describe the Issue

Followed the given advice, suspected reachability-metadata.json was not being read. Corrected that error. got another error about jni section, so reran
application with agent, rebuilt jars and mods again with new data, but back now to complaint that makes no sense to me. I figured I would have some trouble
with javafx libraries, but not getting that far.

See error at bottom.

from reachability-metadata.json

{
      "type": "org.newfdog.jar.Jarbrowser",
      "methods": [
        {
          "name": "<init>",
          "parameterTypes": []
        },
        {
          "name": "main",
          "parameterTypes": [
            "java.lang.String[]"
          ]
        }
      ]
    },
> native-image --verbose \
-cp /Users/jerry/NetBeansProjects/jarbrowser/src/main/resources/META-INF/native-image \
--enable-sbom \
--pgo-instrument \
-march=native \
--emit build-report \
--module-path /Users/jerry/javafx-jmods-24:/Users/jerry/tools/mods\
:/Users/jerry/javafx-sdk-24/lib\
:/Users/jerry/tools/jars \
--add-modules javafx.graphics,javafx.fxml,javafx.controls,newfdog.jarscan,jarbrowser \
--module jarbrowser/org.newfdog.jar.Jarbrowser -o jarb \
--exact-reachability-metadata \
--enable-native-access=ALL-UNNAMED \
--trace-object-instantiation=org.newfdog.jar.Jarbrowser 
jerry@Jerrys-MacBook-Pro jarbrowser % ./native.zsh 2                                  
Apply jar:file:///Users/jerry/jdk-24/Contents/Home/lib/svm/library-support.jar!/META-INF/native-image/com.oracle.svm/thirdparty/native-image.properties
Apply jar:file:///Users/jerry/jdk-24/Contents/Home/lib/svm/library-support.jar!/META-INF/native-image/com.oracle.svm/polyglot/native-image.properties
Executing [
HOME=/Users/jerry \
LANG=en_US.UTF-8 \
'PATH=/Users/jerry:/Users/jerry/bin:/Users/jerry/tools:/Users/jerry/jdk-24/Contents/Home/bin:/Users/jerry/usr/Toolbox/ant/dist/bin:/Users/jerry/usr/Toolbox/maven/bin:/Users/jerry/usr/Toolbox/gradle/bin:/Library/Frameworks/Python.framework/Versions/3.13/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/opt/X11/bin:/Library/Apple/usr/bin:/Applications/Wireshark.app/Contents/MacOS:/Applications/VMware Fusion.app/Contents/Public:/Applications/Icons.app/Contents/MacOS:/Users/jerry/.lmstudio/bin' \
PWD=/Users/jerry/NetBeansProjects/jarbrowser \
USE_NATIVE_IMAGE_JAVA_PLATFORM_MODULE_SYSTEM=true \
/Users/jerry/jdk-24/Contents/Home/bin/java \
-XX:+UnlockExperimentalVMOptions \
-XX:+EnableJVMCI \
-Dtruffle.TrustAllTruffleRuntimeProviders=true \
-Dtruffle.TruffleRuntime=com.oracle.truffle.api.impl.DefaultTruffleRuntime \
-Dgraalvm.ForcePolyglotInvalid=true \
-Dgraalvm.locatorDisabled=true \
--add-exports=java.base/com.sun.crypto.provider=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.access=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.event=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.loader=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.logger=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.misc=com.oracle.graal.graal_enterprise,com.oracle.svm.svm_enterprise,jdk.graal.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile,org.graalvm.nativeimage.pointsto \
--add-exports=java.base/jdk.internal.module=org.graalvm.nativeimage.base,org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.org.objectweb.asm=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.perf=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.platform=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.ref=org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile \
--add-exports=java.base/jdk.internal.reflect=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.util=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.vm.annotation=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.vm=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.invoke.util=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.net.www=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.net=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.nio.ch=org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile \
--add-exports=java.base/sun.reflect.annotation=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.reflect.generics.factory=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.reflect.generics.reflectiveObjects=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.reflect.generics.repository=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.reflect.generics.scope=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.reflect.generics.tree=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.security.jca=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.security.provider=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.security.ssl=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.security.util=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.security.x509=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.text.spi=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.util.calendar=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.util.cldr=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.util.locale.provider=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.util.locale=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.util.resources=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.util=org.graalvm.nativeimage.builder \
--add-exports=java.management/com.sun.jmx.mbeanserver=org.graalvm.nativeimage.builder \
--add-exports=java.management/sun.management=org.graalvm.nativeimage.builder,org.graalvm.nativeimage.pointsto \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.aarch64=com.oracle.graal.graal_enterprise,com.oracle.svm.svm_enterprise,jdk.graal.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.amd64=com.oracle.graal.graal_enterprise,com.oracle.svm.svm_enterprise,jdk.graal.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code.site=com.oracle.svm.svm_enterprise,jdk.graal.compiler,org.graalvm.nativeimage.builder \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code.stack=jdk.graal.compiler,org.graalvm.nativeimage.builder \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code=com.oracle.graal.graal_enterprise,com.oracle.svm.svm_enterprise,jdk.graal.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile,org.graalvm.nativeimage.pointsto,org.graalvm.truffle.compiler \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.common=com.oracle.graal.graal_enterprise,com.oracle.svm.svm_enterprise,jdk.graal.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.pointsto \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.aarch64=jdk.graal.compiler \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.amd64=jdk.graal.compiler \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.riscv64=jdk.graal.compiler \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot=com.oracle.graal.graal_enterprise,jdk.graal.compiler,org.graalvm.nativeimage.builder \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.meta=com.oracle.graal.graal_enterprise,com.oracle.svm.svm_enterprise,jdk.graal.compiler,org.graalvm.nativeimage.base,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile,org.graalvm.nativeimage.pointsto,org.graalvm.truffle.compiler \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.riscv64=com.oracle.svm.svm_enterprise,jdk.graal.compiler,org.graalvm.nativeimage.builder \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.runtime=com.oracle.graal.graal_enterprise,jdk.graal.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.pointsto \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.services=com.oracle.graal.graal_enterprise,com.oracle.svm.svm_enterprise,jdk.graal.compiler,org.graalvm.nativeimage.builder \
--add-exports=jdk.jfr/jdk.jfr.events=org.graalvm.nativeimage.builder \
--add-exports=jdk.jfr/jdk.jfr.internal.event=org.graalvm.nativeimage.builder \
--add-exports=jdk.jfr/jdk.jfr.internal.jfc=com.oracle.svm.svm_enterprise,org.graalvm.nativeimage.builder \
--add-exports=jdk.jfr/jdk.jfr.internal=com.oracle.svm.svm_enterprise,org.graalvm.nativeimage.builder \
--add-exports=jdk.management/com.sun.management.internal=org.graalvm.nativeimage.builder \
-XX:+UseJVMCINativeLibrary \
-Xss10m \
-XX:+UseParallelGC \
-XX:MaxRAMPercentage=35.337702433268234 \
-XX:GCTimeRatio=9 \
-XX:+ExitOnOutOfMemoryError \
-Djava.awt.headless=true \
'-Dorg.graalvm.vendor=Oracle Corporation' \
-Dorg.graalvm.vendorurl=https://www.graalvm.org/ \
'-Dorg.graalvm.vendorversion=Oracle GraalVM 24+36.1' \
-Dorg.graalvm.version=24.2.0 \
-Dcom.oracle.graalvm.isaot=true \
-Djava.system.class.loader=com.oracle.svm.hosted.NativeImageSystemClassLoader \
-Xshare:off \
-Djdk.internal.lambda.disableEagerInitialization=true \
-Djdk.internal.lambda.eagerlyInitialize=false \
-Djava.lang.invoke.InnerClassLambdaMetafactory.initializeLambdas=false \
-Djava.lang.invoke.MethodHandle.DONT_INLINE_THRESHOLD=-1 \
-Djava.lang.invoke.MethodHandle.PROFILE_GWT=false \
-agentlib:native-image-diagnostics-agent=o=org.newfdog.jar.Jarbrowser \
--add-modules=ALL-DEFAULT \
--enable-native-access=org.graalvm.nativeimage.builder,org.graalvm.nativeimage.foreign,org.graalvm.nativeimage.pointsto,org.graalvm.nativeimage.base,org.graalvm.nativeimage.objectfile,com.oracle.svm.svm_enterprise \
--module-path \
/Users/jerry/jdk-24/Contents/Home/lib/svm/builder/svm.jar:/Users/jerry/jdk-24/Contents/Home/lib/svm/builder/native-image-base.jar:/Users/jerry/jdk-24/Contents/Home/lib/svm/builder/objectfile.jar:/Users/jerry/jdk-24/Contents/Home/lib/svm/builder/svm-enterprise.jar:/Users/jerry/jdk-24/Contents/Home/lib/svm/builder/svm-foreign.jar:/Users/jerry/jdk-24/Contents/Home/lib/svm/builder/pointsto.jar \
-Dorg.graalvm.nativeimage.module.addmods=javafx.graphics,javafx.fxml,javafx.controls,newfdog.jarscan,jarbrowser,java.rmi,jdk.jdi,java.xml,jdk.xml.dom,java.datatransfer,org.graalvm.truffle.compiler,java.desktop,java.security.sasl,org.graalvm.nativeimage,jdk.zipfs,java.base,jdk.management.agent,org.graalvm.word,java.sql.rowset,jdk.jsobject,jdk.unsupported,jdk.jlink,java.security.jgss,java.compiler,jdk.graal.compiler,jdk.unsupported.desktop,java.sql,org.graalvm.collections,java.logging,java.xml.crypto,java.transaction.xa,jdk.jfr,jdk.internal.vm.ci,jdk.internal.md,java.naming,jdk.internal.ed,java.prefs,java.net.http,jdk.compiler,jdk.internal.opt,jdk.attach,jdk.internal.le,java.management,jdk.jdwp.agent,jdk.internal.jvmstat,java.instrument,jdk.management,java.scripting,jdk.jdeps,java.management.rmi \
--add-modules=java.rmi,jdk.jdi,java.xml,jdk.xml.dom,java.datatransfer,org.graalvm.truffle.compiler,java.desktop,java.security.sasl,org.graalvm.nativeimage,jdk.zipfs,java.base,jdk.management.agent,org.graalvm.word,java.sql.rowset,jdk.jsobject,jdk.unsupported,jdk.jlink,java.security.jgss,java.compiler,jdk.graal.compiler,jdk.unsupported.desktop,java.sql,org.graalvm.collections,java.logging,java.xml.crypto,java.transaction.xa,jdk.jfr,jdk.internal.vm.ci,jdk.internal.md,java.naming,jdk.internal.ed,java.prefs,java.net.http,jdk.compiler,jdk.internal.opt,jdk.attach,jdk.internal.le,java.management,jdk.jdwp.agent,jdk.internal.jvmstat,java.instrument,jdk.management,java.scripting,jdk.jdeps,java.management.rmi \
--module \
org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner \
-keepalive \
/var/folders/_7/hfqv49r549j2wv_3c9595x880000gn/T/.native_image16496652719713189457alive \
-imagecp \
/Users/jerry/NetBeansProjects/jarbrowser/src/main/resources/META-INF/native-image \
-imagemp \
/Users/jerry/tools/jars/newfdog.logger.jar:/Users/jerry/javafx-sdk-24/lib/javafx-swt.jar:/Users/jerry/javafx-sdk-24/lib/javafx.web.jar:/Users/jerry/javafx-sdk-24/lib/javafx.graphics.jar:/Users/jerry/javafx-sdk-24/lib/javafx.fxml.jar:/Users/jerry/javafx-sdk-24/lib/javafx.media.jar:/Users/jerry/javafx-sdk-24/lib/jfx.incubator.input.jar:/Users/jerry/javafx-sdk-24/lib/javafx.controls.jar:/Users/jerry/tools/jars/jarbrowser-1.0.0.jar:/Users/jerry/javafx-sdk-24/lib/javafx.swing.jar:/Users/jerry/jdk-24/Contents/Home/lib/svm/library-support.jar:/Users/jerry/javafx-sdk-24/lib/javafx.base.jar:/Users/jerry/tools/jars/newfdog.jarscan.jar:/Users/jerry/javafx-sdk-24/lib/jfx.incubator.richtext.jar \
-H:CLibraryPath=/Users/jerry/jdk-24/Contents/Home/lib/svm/clibraries/darwin-aarch64,/Users/jerry/jdk-24/Contents/Home/lib/svm/clibraries \
-H:Path@driver=/Users/jerry/NetBeansProjects/jarbrowser \
-H:IncludeSBOM@user+api=embed,cyclonedx \
-H:+ProfilingEnabled@user+api \
-H:MicroArchitecture@user+api=native \
-H:Emit@user+api=build-report \
-H:Class@driver=org.newfdog.jar.Jarbrowser \
-H:Module@driver=jarbrowser \
-H:Name@user+api=jarb \
-H:ThrowMissingRegistrationErrors@user+api= \
-H:EnableNativeAccess@user+api=ALL-UNNAMED \
-H:TraceObjectInstantiation@user+api=org.newfdog.jar.Jarbrowser \
-H:ImageBuildID@driver=0aa6351a-d5ff-87e4-68a3-481c4e25e7fa \
'-H:Features@jar:file:///Users/jerry/jdk-24/Contents/Home/lib/svm/library-support.jar!/META-INF/native-image/com.oracle.svm/thirdparty/native-image.properties+api=com.oracle.svm.thirdparty.gson.GsonFeature' \
'-H:Features@jar:file:///Users/jerry/jdk-24/Contents/Home/lib/svm/library-support.jar!/META-INF/native-image/com.oracle.svm/polyglot/native-image.properties+api=com.oracle.svm.polyglot.groovy.GroovyIndyInterfaceFeature,com.oracle.svm.polyglot.scala.ScalaFeature' \
-H:Color@driver=always \
-H:+BuildOutputProgress@driver \
-H:+BuildOutputLinks@driver
]
====================================================================================================
GraalVM Native Image: Generating 'jarb' (executable)...
====================================================================================================
[1/8] Initializing...                                                                (3.2s @ 0.15GB)
 Java version: 24+36, vendor version: Oracle GraalVM 24+36.1
 Graal compiler: optimization level: 2, target machine: native, PGO: sampling+instrument
 C compiler: cc (apple, arm64, 17.0.0)
 Garbage collector: Serial GC (max heap size: 80% of RAM)
 1 user-specific feature(s):
 - com.oracle.svm.thirdparty.gson.GsonFeature
----------------------------------------------------------------------------------------------------
Build resources:
 - 15.08GB of memory (31.4% of 48.00GB system memory, determined at start)
 - 16 thread(s) (100.0% of 16 available processor(s), determined at start)
Warning: We could not find any version info for the following classes:
javafx.beans.WeakListener
javafx.application.ConditionalFeature
com.sun.javafx.event.BasicEventDispatcher
javafx.collections.ObservableList
javafx.scene.image.Image
javafx.geometry.NodeOrientation
com.sun.javafx.stage.StagePeerListener.StageAccessor
javafx.beans.Observable
javafx.beans.value.ObservableObjectValue
org.newfdog.util.logging.SystemLoggerFinder
javafx.collections.ListChangeBuilder.SingleChange
javafx.beans.binding.BooleanExpression
com.sun.javafx.stage.StageHelper
javafx.collections.ModifiableObservableListBase
javafx.stage.Modality
javafx.stage.Window.SceneModel
com.sun.javafx.collections.VetoableListDecorator.VetoableSubListDecorator
javafx.beans.binding.NumberExpression
javafx.event.EventTarget
com.sun.javafx.tk.TKPulseListener
javafx.beans.property.SimpleObjectProperty
javafx.collections.ModifiableObservableListBase.SubObservableList
org.newfdog.util.logging.RotatingFilePrintStream.MeteredStream
com.sun.javafx.event.EventDispatchChainImpl
javafx.stage.Stage
javafx.beans.property.ReadOnlyDoubleWrapper
javafx.collections.FXCollections
javafx.application.Preloader.PreloaderNotification
javafx.scene.Scene
javafx.collections.FXCollections.UnmodifiableObservableListImpl
org.newfdog.util.logging.RotatingFilePrintStream.ErrorManager
javafx.beans.property.ObjectProperty
javafx.beans.value.ObservableBooleanValue
com.sun.javafx.application.ParametersImpl
javafx.beans.property.SimpleDoubleProperty
javafx.application.Preloader
javafx.beans.value.ObservableValue
com.sun.javafx.perf.PerformanceTracker
javafx.beans.InvalidationListener
com.sun.javafx.application.PlatformImpl
javafx.beans.value.WritableObjectValue
javafx.beans.binding.DoubleExpression
javafx.beans.property.DoublePropertyBase
javafx.application.Application.Parameters
com.sun.glass.utils.NativeLibLoader
com.sun.javafx.SecurityUtil
javafx.collections.ListChangeListener
javafx.collections.WeakListChangeListener
com.sun.javafx.stage.StagePeerListener
com.sun.javafx.collections.TrackableObservableList
javafx.beans.property.ReadOnlyObjectProperty
com.sun.javafx.stage.WindowCloseRequestHandler
com.sun.javafx.application.WindowsHighContrastScheme
com.sun.javafx.util.ModuleHelper
javafx.beans.binding.ObjectExpression
com.sun.javafx.binding.ExpressionHelperBase
javafx.beans.property.BooleanProperty
com.sun.javafx.stage.WindowHelper.WindowAccessor
javafx.collections.ListChangeBuilder.SubChange
com.sun.javafx.collections.ListListenerHelper.Generic
javafx.application.Preloader.ErrorNotification
javafx.beans.DefaultProperty
com.sun.javafx.stage.WindowHelper
javafx.geometry.Rectangle2D
com.sun.javafx.collections.ChangeHelper
org.newfdog.util.logging.Logger.CallerFinder
org.newfdog.util.logging.Logger
com.sun.javafx.event.CompositeEventDispatcher
com.sun.javafx.event.EventHandlerManager
javafx.beans.property.ReadOnlyBooleanProperty
com.sun.javafx.collections.ListListenerHelper.SingleInvalidation
com.sun.javafx.collections.ObservableListWrapper
javafx.stage.Window.TKBoundsConfigurator
com.sun.javafx.collections.SourceAdapterChange
com.sun.javafx.embed.swing.SwingFXUtilsImpl
com.sun.javafx.util.Utils
javafx.stage.Window
javafx.beans.property.Property
com.sun.javafx.collections.VetoableListDecorator.VetoableListIteratorDecorator
com.sun.javafx.application.LauncherImpl
com.sun.javafx.application.PlatformImpl.FinishListener
javafx.stage.StageStyle
javafx.beans.value.WritableBooleanValue
javafx.application.Preloader.ProgressNotification
com.sun.javafx.scene.SceneHelper
com.sun.javafx.runtime.VersionInfo
javafx.beans.property.SimpleBooleanProperty
com.sun.javafx.collections.ListListenerHelper.SingleChange
javafx.event.EventDispatcher
com.sun.javafx.stage.WindowEventDispatcher
javafx.beans.value.ObservableNumberValue
javafx.collections.ObservableListBase
com.sun.javafx.collections.VetoableListDecorator
javafx.collections.ListChangeBuilder
com.sun.glass.ui.Application
javafx.beans.property.ObjectPropertyBase
javafx.beans.binding.NumberExpressionBase
com.sun.javafx.scene.SceneHelper.SceneAccessor
javafx.beans.property.ReadOnlyBooleanWrapper
com.sun.javafx.perf.PerformanceTracker.SceneAccessor
com.sun.javafx.collections.VetoableListDecorator.VetoableSubListDecorator.ModCountAccessorImplSub
javafx.beans.value.WritableDoubleValue
javafx.collections.ListChangeBuilder.IterableChange
com.sun.javafx.collections.VetoableListDecorator.ModCountAccessor
com.sun.javafx.tk.Toolkit
javafx.stage.Screen
javafx.beans.value.WritableNumberValue
javafx.beans.property.DoubleProperty
com.sun.javafx.event.EventRedirector
javafx.beans.property.ReadOnlyProperty
com.sun.javafx.collections.VetoableListDecorator.VetoableIteratorDecorator
com.sun.javafx.tk.TKScreenConfigurationListener
com.sun.javafx.collections.ElementObserver
com.sun.javafx.tk.TKStageListener
com.sun.javafx.collections.SortableList
org.newfdog.util.logging.RotatingFilePrintStream
javafx.beans.property.ReadOnlyObjectWrapper
com.sun.javafx.stage.StageHelper.StageAccessor
javafx.beans.property.ReadOnlyDoubleProperty
com.sun.javafx.PlatformUtil
javafx.application.Preloader.StateChangeNotification
org.newfdog.util.logging.RotatingFilePrintStream.InitializationErrorManager
com.sun.javafx.collections.ListListenerHelper
com.sun.javafx.stage.WindowPeerListener
javafx.application.Preloader.StateChangeNotification.Type
javafx.event.EventDispatchChain
com.sun.javafx.tk.Toolkit.ImageAccessor
com.sun.javafx.tk.TKListener
com.sun.javafx.collections.VetoableListDecorator.ModCountAccessorImpl
javafx.collections.ListChangeListener.Change
javafx.beans.value.WritableValue
javafx.application.Application
javafx.beans.value.ObservableDoubleValue
javafx.beans.property.BooleanPropertyBase
[2/8] Performing analysis...  [*****]                                                (3.2s @ 0.51GB)
    4,447 reachable types   (71.8% of    6,192 total)
    5,243 reachable fields  (44.7% of   11,740 total)
   21,709 reachable methods (47.0% of   46,176 total)
    1,484 types,     5 fields, and   275 methods registered for reflection
       58 types,    58 fields, and    52 methods registered for JNI access
        5 native libraries: -framework Foundation, dl, m, pthread, z
[3/8] Building universe...                                                           (0.7s @ 0.48GB)
[4/8] Parsing methods...      [*]                                                    (0.5s @ 0.47GB)
[5/8] Inlining methods...     [**]                                                   (0.1s @ 0.51GB)
[6/8] Compiling methods...    [***]                                                  (8.4s @ 1.04GB)
[7/8] Laying out methods...   [*]                                                    (1.4s @ 1.13GB)
[8/8] Creating image...       [**]                                                   (3.1s @ 1.66GB)
  17.56MB (39.53%) for code area:    11,426 compilation units
  26.19MB (58.95%) for image heap:  833,598 objects and 58 resources
 688.87kB ( 1.51%) for other data
  44.42MB in total
----------------------------------------------------------------------------------------------------
Top 10 origins of code area:                      Top 10 object types in image heap:
  11.94MB java.base                                  5.39MB c.o.s.e.p.f.c.CallingConte~rest$SlimNode
   3.78MB svm.jar (Native Image)                     3.04MB byte[] for java.lang.String
 549.51kB com.oracle.svm.svm_enterprise              2.95MB byte[] for code metadata
 297.72kB java.logging                               2.04MB java.lang.String
 268.16kB javafx.base                                1.80MB c.o.s.e.p.f.CommonInstrum~Data$IfPayload
 212.12kB javafx.graphics                            1.59MB int[]
 149.43kB newfdog.logger                             1.32MB c.o.s.e.p.f.CommonInstrum~odEntryPayload
  88.23kB jdk.graal.compiler                         1.06MB c.o.s.e.p.framework.ProfilingMethod
  62.60kB org.graalvm.collections                  876.41kB c.o.s.e.p.f.c.CallingConte~st$SlimNode[]
  55.31kB jdk.proxy2                               814.25kB java.lang.Class
 140.60kB for 8 more packages                        5.34MB for 1170 more object types
                          For more details, open 'jarb-build-report.html'.
----------------------------------------------------------------------------------------------------
Security report:
 - Binary includes Java deserialization.
 - CycloneDX SBOM with 7 component(s) is embedded in binary (554.00B).
----------------------------------------------------------------------------------------------------
Recommendations:
 PGO:  Use Profile-Guided Optimizations ('--pgo') for improved throughput.
 HEAP: Set max heap for improved and more predictable memory usage.
 QBM:  Use the quick build mode ('-Ob') to speed up builds during development.
----------------------------------------------------------------------------------------------------
              1.6s (6.8% of total time) in 516 GCs | Peak RSS: 2.77GB | CPU load: 9.46
----------------------------------------------------------------------------------------------------
Build artifacts:
 /Users/jerry/NetBeansProjects/jarbrowser/jarb (executable)
 /Users/jerry/NetBeansProjects/jarbrowser/jarb-build-report.html (build_info)
====================================================================================================
Finished generating 'jarb' in 22.9s.
Run as ./jarb -XX:MissingRegistrationReportingMode=Warn
jerry@Jerrys-MacBook-Pro jarbrowser % ./jarb -XX:MissingRegistrationReportingMode=Warn
Note: this run will print partial stack traces of the locations where a class org.graalvm.nativeimage.MissingReflectionRegistrationError would be thrown when the -H:+ThrowMissingRegistrationErrors option is set. The trace stops at the first entry of JDK code and provides 8 lines of context.
org.graalvm.nativeimage.MissingReflectionRegistrationError: The program tried to reflectively access class

   org.newfdog.jar.Jarbrowser

without it being registered for runtime reflection. Add org.newfdog.jar.Jarbrowser to the reflection metadata to solve this problem. See https://www.graalvm.org/latest/reference-manual/native-image/metadata/#reflection for help.
  java.base@24/java.lang.Class.forName(DynamicHub.java:1497)
  javafx.graphics@24/javafx.application.Application.launch(Application.java:299)
  jarbrowser@1.0.0/org.newfdog.jar.Jarbrowser.main(Jarbrowser.java:125)
Exception in thread "main" java.lang.RuntimeException: java.lang.ClassNotFoundException: org.newfdog.jar.Jarbrowser
	at javafx.graphics@24/javafx.application.Application.launch(Application.java:311)
	at jarbrowser@1.0.0/org.newfdog.jar.Jarbrowser.main(Jarbrowser.java:125)
Caused by: java.lang.ClassNotFoundException: org.newfdog.jar.Jarbrowser
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.hub.ClassForNameSupport.forName(ClassForNameSupport.java:215)
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.hub.ClassForNameSupport.forName(ClassForNameSupport.java:183)
	at java.base@24/java.lang.Class.forName(DynamicHub.java:1509)
	at java.base@24/java.lang.Class.forName(DynamicHub.java:1497)
	at javafx.graphics@24/javafx.application.Application.launch(Application.java:299)
	... 1 more

Using the latest version of GraalVM can resolve many issues.

GraalVM Version

java version "24" 2025-03-18
Java(TM) SE Runtime Environment Oracle GraalVM 24+36.1 (build 24+36-jvmci-b01)
Java HotSpot(TM) 64-Bit Server VM Oracle GraalVM 24+36.1 (build 24+36-jvmci-b01, mixed mode, sharing)

JavaFX version 24

Operating System and Version

MacOS Sequoia 15.4.1

Troubleshooting Confirmation

Run Command

native-image --verbose \
-cp /Users/jerry/NetBeansProjects/jarbrowser/src/main/resources/META-INF/native-image \
--enable-sbom \
--pgo-instrument \
-march=native \
--emit build-report \
--module-path /Users/jerry/javafx-jmods-24:/Users/jerry/tools/mods\
:/Users/jerry/javafx-sdk-24/lib\
:/Users/jerry/tools/jars \
--add-modules javafx.graphics,javafx.fxml,javafx.controls,newfdog.jarscan,jarbrowser \
--module jarbrowser/org.newfdog.jar.Jarbrowser -o jarb \
--exact-reachability-metadata \
--enable-native-access=ALL-UNNAMED \
--trace-object-instantiation=org.newfdog.jar.Jarbrowser 

Expected Behavior

I expected trouble from javafx libraries. but am not getting that far. The samples I have seen all use older special gluon modified versions.
I am trying to understand requirements. I tried the maven plugin, but that did not help, and the output was not useful in determining the problems.
Being a novice with maven I gave up for now on using it for jlink, jpackage, or native-image. Running them from scripts on the command line has provided
more insight and success. I hope I have provided enough information. Any suggestions on things to try would be appreciated.

Actual Behavior

./jarb -XX:MissingRegistrationReportingMode=Warn
Note: this run will print partial stack traces of the locations where a class org.graalvm.nativeimage.MissingReflectionRegistrationError would be thrown when the -H:+ThrowMissingRegistrationErrors option is set. The trace stops at the first entry of JDK code and provides 8 lines of context.
org.graalvm.nativeimage.MissingReflectionRegistrationError: The program tried to reflectively access class

   org.newfdog.jar.Jarbrowser

without it being registered for runtime reflection. Add org.newfdog.jar.Jarbrowser to the reflection metadata to solve this problem. See https://www.graalvm.org/latest/reference-manual/native-image/metadata/#reflection for help.
  java.base@24/java.lang.Class.forName(DynamicHub.java:1497)
  javafx.graphics@24/javafx.application.Application.launch(Application.java:299)
  jarbrowser@1.0.0/org.newfdog.jar.Jarbrowser.main(Jarbrowser.java:125)
Exception in thread "main" java.lang.RuntimeException: java.lang.ClassNotFoundException: org.newfdog.jar.Jarbrowser
	at javafx.graphics@24/javafx.application.Application.launch(Application.java:311)
	at jarbrowser@1.0.0/org.newfdog.jar.Jarbrowser.main(Jarbrowser.java:125)
Caused by: java.lang.ClassNotFoundException: org.newfdog.jar.Jarbrowser
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.hub.ClassForNameSupport.forName(ClassForNameSupport.java:215)
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.hub.ClassForNameSupport.forName(ClassForNameSupport.java:183)
	at java.base@24/java.lang.Class.forName(DynamicHub.java:1509)
	at java.base@24/java.lang.Class.forName(DynamicHub.java:1497)
	at javafx.graphics@24/javafx.application.Application.launch(Application.java:299)
	... 1 more

Steps to Reproduce

Run native-image
run the image created ./jarb -XX:MissingRegistrationReportingMode=Warn
I created a jarb.nib, but it is not accepted, with the message FileType not allowed: .nib

Additional Context

No response

Run-Time Log Output and Error Messages

No response

@oubidar-Abderrahim
Copy link
Member

Hi, Thank you for reaching out, could you please verify if this issue is still present in the latest GraalVM for JDK 24.0.1
also kindly provide a small reproducer code for this issue, thanks

@jerry-apl
Copy link
Author

Thanks for the response, will try the latest, and report back.
Note one of the problems in doing a reproducer is the failure of GitHub to accept a .nib file that if I read correctly will gather the needed things to do the reproduction.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants