oracle/graal · error · IllegalArgumentException

The '%s' property is no longer supported.

Error message

The '%s' property is no longer supported.

What it means

While scanning system properties for -Dgraal.* overrides, HotSpotGraalOptionValues recognizes the legacy options-file property name (UNSUPPORTED_GRAAL_OPTIONS_FILE_PROPERTY_NAME) and throws IllegalArgumentException('The ... property is no longer supported.') instead of silently ignoring it. The file-based Graal options mechanism was removed, and this guard produces a clear failure at options bootstrap.

Source

Thrown at compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/HotSpotGraalOptionValues.java:120

            Map<String, String> savedProps = GraalServices.getSavedProperties();

            EconomicMap<String, String> compilerOptionSettings = EconomicMap.create();
            EconomicMap<String, String> vmOptionSettings = EconomicMap.create();

            for (Map.Entry<String, String> e : savedProps.entrySet()) {
                String name = e.getKey();
                if (name.startsWith(LEGACY_GRAAL_OPTION_PROPERTY_PREFIX)) {
                    // Convert legacy name to new name
                    String baseName = name.substring(LEGACY_GRAAL_OPTION_PROPERTY_PREFIX.length());
                    name = GRAAL_OPTION_PROPERTY_PREFIX + baseName;
                }
                if (name.startsWith(GRAAL_OPTION_PROPERTY_PREFIX)) {
                    if (name.startsWith(LIBGRAAL_VM_OPTION_PROPERTY_PREFIX)) {
                        vmOptionSettings.put(stripPrefix(name, LIBGRAAL_VM_OPTION_PROPERTY_PREFIX), e.getValue());
                    } else if (name.equals(UNSUPPORTED_GRAAL_OPTIONS_FILE_PROPERTY_NAME)) {
                        String msg = String.format("The '%s' property is no longer supported.",
                                        UNSUPPORTED_GRAAL_OPTIONS_FILE_PROPERTY_NAME);
                        throw new IllegalArgumentException(msg);
                    } else {
                        String value = e.getValue();
                        compilerOptionSettings.put(stripPrefix(name, GRAAL_OPTION_PROPERTY_PREFIX), value);
                    }
                }
            }

            if (!vmOptionSettings.isEmpty()) {
                LibGraalSupport libgraal = LibGraalSupport.INSTANCE;
                if (libgraal != null) {
                    libgraal.notifyOptions(vmOptionSettings);
                } else {
                    System.err.printf("WARNING: Ignoring the following libgraal VM option(s) while executing jargraal: %s%n", vmOptionSettings);
                }
            }
            OptionsParser.parseOptions(compilerOptionSettings, compilerOptionValues, descriptors);
            return compilerOptionValues;
        }

View on GitHub (pinned to a66e9ccd1d)

Solutions

  1. Delete the property from the command line, JAVA_OPTS, and env-derived flags; put options into -Dgraal.<Option>=<value> properties directly
  2. Move the removed file's contents into the command line or a launcher config supported by the current version

Example fix

# before
java -Dgraal.options.file=/etc/graal.opts MyApp

# after
java -Dgraal.CompilationBailoutAction=1 -Dgraal.TraceInlining=true MyApp
Defensive patterns

Strategy: validation

Validate before calling

if (System.getProperty(UNSUPPORTED_GRAAL_OPTIONS_FILE_PROP) != null) { /* fail fast with a clear message before launching Graal */ }

Prevention

When it happens

Trigger: Starting the JVM with the removed property still set — e.g. -Dgraal.options.file=... (the exact legacy name) — while any jdk.graal.compiler property handling runs; the throw happens during parseOptions of the option values, i.e. at first Graal initialization.

Common situations: Old scripts/Dockerfiles/benchmark harnesses (e.g. dacapo-style wrappers) carrying the property forward after a GraalVM upgrade; documentation that still recommends the options file; CI defaults from an era when graal.options.file was valid.

Related errors


AI-assisted analysis of oracle/graal@a66e9ccd1d (2026-08-14). Data as JSON: /api/errors/babb2bde3e169c55. Report an issue: GitHub.