quarkusio/quarkus · error · IllegalArgumentException
Failed to determine JVM option group given property name ${p
Error message
Failed to determine JVM option group given property name ${propName} What it means
JvmOptionsBuilder.getGroupPrefixForPropertyName derives the JVM option group prefix from a quarkus extension JVM option property name by locating the '.' after the known prefix. If no dot is present, the property name is malformed and IllegalArgumentException is thrown.
Source
Thrown at independent-projects/bootstrap/app-model/src/main/java/io/quarkus/bootstrap/model/JvmOptionsBuilder.java:23
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import io.quarkus.bootstrap.BootstrapConstants;
/**
* JVM arguments builder
*/
public class JvmOptionsBuilder {
public static boolean isExtensionDevModeJvmOptionProperty(String name) {
return name.startsWith(BootstrapConstants.EXT_DEV_MODE_JVM_OPTION_PREFIX);
}
private static String getGroupPrefixForPropertyName(String propName) {
final int i = propName.indexOf('.', BootstrapConstants.EXT_DEV_MODE_JVM_OPTION_PREFIX.length() + 1);
if (i < 0) {
throw new IllegalArgumentException("Failed to determine JVM option group given property name " + propName);
}
return propName.substring(BootstrapConstants.EXT_DEV_MODE_JVM_OPTION_PREFIX.length(), i + 1);
}
private Map<String, MutableBaseJvmOption<?>> options = Map.of();
JvmOptionsBuilder() {
}
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()) {View on GitHub (pinned to e1c734241f)
Solutions
- Supply the property name with its full group, e.g. '<prefix>standard.HeapDumpOnOutOfMemoryError' instead of '<prefix>HeapDumpOnOutOfMemoryError'.
- Validate the property key format before passing it to the builder.
- Check application.properties / build config for truncated JVM option keys.
Example fix
// before
builder.addFromQuarkusExtensionProperty("quarkus.jvm-options", "-XX:+HeapDumpOnOutOfMemoryError");
// after
builder.addFromQuarkusExtensionProperty("quarkus.jvm-options.xx.HeapDumpOnOutOfMemoryError", "+HeapDumpOnOutOfMemoryError"); Defensive patterns
Strategy: validation
Validate before calling
String PREFIX = BootstrapConstants.EXT_DEV_MODE_JVM_OPTION_PREFIX;
if (!propName.startsWith(PREFIX)
|| propName.indexOf('.', PREFIX.length() + 1) < 0) {
throw new IllegalArgumentException("Malformed JVM option property: " + propName);
} Type guard
static boolean hasOptionGroup(String propName) {
String p = BootstrapConstants.EXT_DEV_MODE_JVM_OPTION_PREFIX;
return propName.startsWith(p) && propName.indexOf('.', p.length() + 1) >= 0;
} Try / catch
try {
builder.addFromQuarkusExtensionProperty(propName, value);
} catch (IllegalArgumentException e) {
throw new IllegalStateException("Missing group in JVM option property: " + propName, e);
} Prevention
- Always include a group segment after the jvm-options prefix in property keys.
- Validate property key shapes before feeding them to JvmOptionsBuilder.
When it happens
Trigger: Calling groupPrefix (via addFromQuarkusExtensionProperty) with a property starting with the dev-mode JVM option prefix but containing no subsequent dot, e.g. 'quarkus.jvm-options' style key without a group segment.
Common situations: Misconfigured quarkus.* jvm option property missing the group part ('quarkus.jvm-options.xx.' vs 'quarkus.jvm-options.'), typos in extension property keys, hand-written config in application.properties.
Related errors
- Unrecognized JVM option group prefix ${optionGroupPrefix}
- Failed to load application configuration
- Failed to initialize application configuration
- Unrecognized option for quarkus.bootstrap.misaligned-platfor
- The configuration ${clazz} is missing the @ConfigRoot annota
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/98d694411c8c2edb.
Report an issue: GitHub.