quarkusio/quarkus · error · IllegalArgumentException
Unrecognized JVM option group prefix ${optionGroupPrefix}
Error message
Unrecognized JVM option group prefix ${optionGroupPrefix} What it means
When adding a single JVM option, addToGroup looks up the option group prefix and instantiates either a standard or -XX type option via a switch. Any other prefix is unrecognized and throws IllegalArgumentException. Only the two known PROPERTY_GROUP_PREFIX values are supported.
Source
Thrown at independent-projects/bootstrap/app-model/src/main/java/io/quarkus/bootstrap/model/JvmOptionsBuilder.java:51
public void addFromQuarkusExtensionProperty(String propertyName, String value) {
final String groupPrefix = getGroupPrefixForPropertyName(propertyName);
final String optionName = propertyName
.substring(BootstrapConstants.EXT_DEV_MODE_JVM_OPTION_PREFIX.length() + groupPrefix.length());
addToGroup(groupPrefix, optionName, value);
}
private JvmOptionsBuilder addToGroup(String optionGroupPrefix, String optionName, String value) {
if (options.isEmpty()) {
options = new HashMap<>();
}
var option = options.computeIfAbsent(optionName, n -> {
switch (optionGroupPrefix) {
case MutableStandardJvmOption.PROPERTY_GROUP_PREFIX:
return MutableStandardJvmOption.newInstance(optionName);
case MutableXxJvmOption.PROPERTY_GROUP_PREFIX:
return MutableXxJvmOption.newInstance(optionName);
}
throw new IllegalArgumentException("Unrecognized JVM option group prefix " + optionGroupPrefix);
});
if (!value.isBlank()) {
option.addValue(value);
}
return this;
}
JvmOptionsBuilder addAllToGroup(String optionGroupPrefix, String optionName, Collection<String> values) {
if (options.isEmpty()) {
options = new HashMap<>();
}
var option = options.computeIfAbsent(optionName, n -> {
switch (optionGroupPrefix) {
case MutableStandardJvmOption.PROPERTY_GROUP_PREFIX:
return MutableStandardJvmOption.newInstance(optionName);
case MutableXxJvmOption.PROPERTY_GROUP_PREFIX:
return MutableXxJvmOption.newInstance(optionName);
}View on GitHub (pinned to e1c734241f)
Solutions
- Use a supported group prefix: the standard option group or the '-XX' option group ('xx.').
- Fix the property key in configuration so the group segment is 'standard.' or 'xx.' as expected.
- If a new option kind is genuinely needed, extend the switch with a new Mutable*JvmOption type.
Example fix
// before
builder.addFromQuarkusExtensionProperty("quarkus.jvm-options.x.MaxMetaspaceSize", "256m");
// after
builder.addFromQuarkusExtensionProperty("quarkus.jvm-options.xx.MaxMetaspaceSize", "256m"); Defensive patterns
Strategy: validation
Validate before calling
if (!optionGroupPrefix.equals(MutableStandardJvmOption.PROPERTY_GROUP_PREFIX)
&& !optionGroupPrefix.equals(MutableXxJvmOption.PROPERTY_GROUP_PREFIX)) {
throw new IllegalArgumentException("Unsupported option group: " + optionGroupPrefix);
} Type guard
static boolean isKnownOptionGroup(String prefix) {
return MutableStandardJvmOption.PROPERTY_GROUP_PREFIX.equals(prefix)
|| MutableXxJvmOption.PROPERTY_GROUP_PREFIX.equals(prefix);
} Try / catch
try {
builder.addFromQuarkusExtensionProperty(key, value);
} catch (IllegalArgumentException e) {
if (e.getMessage().startsWith("Unrecognized JVM option group prefix")) {
LOG.warnf("Skipping JVM option with unknown group: %s", key);
return;
}
throw e;
} Prevention
- Use only documented group prefixes (standard / xx) in quarkus.jvm-options keys.
- Validate group segments when generating property maps.
- Whitelist known prefixes when parsing external configuration.
When it happens
Trigger: addFromQuarkusExtensionProperty computes an optionGroupPrefix that is neither MutableStandardJvmOption.PROPERTY_GROUP_PREFIX nor MutableXxJvmOption.PROPERTY_GROUP_PREFIX, typically from a typo'd property group segment.
Common situations: Configured group like 'quarkus.jvm-options.xyz.Foo' where 'xyz.' matches no known prefix; refactors renaming group prefixes; typos such as 'x.' instead of 'xx.'.
Related errors
- Unknown JAR package type '${value}'
- Unable to resolve locale: ${value}
- Unsupported compressor '
- proxyHost must not be null
- Invalid port number
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/f17561b7f662059e.
Report an issue: GitHub.