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
- Delete the property from the command line, JAVA_OPTS, and env-derived flags; put options into -Dgraal.<Option>=<value> properties directly
- 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
- Grep scripts/images for removed properties after each GraalVM upgrade
- Migrate options-file contents into -Dgraal.<Option>=value flags
- Maintain a 'removed options' checklist for your launch tooling
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
- No options specified for MethodFilter:
- Option name must follow '<prefix>' prefix
- CrashAtThrowsOOME and CrashAtIsFatal cannot both be enabled
- Compiler configuration '%s' not found. Available configurati
- No %s providers found
AI-assisted analysis of oracle/graal@a66e9ccd1d (2026-08-14).
Data as JSON: /api/errors/babb2bde3e169c55.
Report an issue: GitHub.