{"record":{"id":"f17561b7f662059e","repo":"quarkusio/quarkus","slug":"unrecognized-jvm-option-group-prefix-optiongroup","errorCode":null,"errorMessage":"Unrecognized JVM option group prefix ${optionGroupPrefix}","messagePattern":"Unrecognized JVM option group prefix (.+?)","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"independent-projects/bootstrap/app-model/src/main/java/io/quarkus/bootstrap/model/JvmOptionsBuilder.java","lineNumber":51,"sourceCode":"    public void addFromQuarkusExtensionProperty(String propertyName, String value) {\n        final String groupPrefix = getGroupPrefixForPropertyName(propertyName);\n        final String optionName = propertyName\n                .substring(BootstrapConstants.EXT_DEV_MODE_JVM_OPTION_PREFIX.length() + groupPrefix.length());\n        addToGroup(groupPrefix, optionName, value);\n    }\n\n    private JvmOptionsBuilder addToGroup(String optionGroupPrefix, String optionName, String value) {\n        if (options.isEmpty()) {\n            options = new HashMap<>();\n        }\n        var option = options.computeIfAbsent(optionName, n -> {\n            switch (optionGroupPrefix) {\n                case MutableStandardJvmOption.PROPERTY_GROUP_PREFIX:\n                    return MutableStandardJvmOption.newInstance(optionName);\n                case MutableXxJvmOption.PROPERTY_GROUP_PREFIX:\n                    return MutableXxJvmOption.newInstance(optionName);\n            }\n            throw new IllegalArgumentException(\"Unrecognized JVM option group prefix \" + optionGroupPrefix);\n        });\n        if (!value.isBlank()) {\n            option.addValue(value);\n        }\n        return this;\n    }\n\n    JvmOptionsBuilder addAllToGroup(String optionGroupPrefix, String optionName, Collection<String> values) {\n        if (options.isEmpty()) {\n            options = new HashMap<>();\n        }\n        var option = options.computeIfAbsent(optionName, n -> {\n            switch (optionGroupPrefix) {\n                case MutableStandardJvmOption.PROPERTY_GROUP_PREFIX:\n                    return MutableStandardJvmOption.newInstance(optionName);\n                case MutableXxJvmOption.PROPERTY_GROUP_PREFIX:\n                    return MutableXxJvmOption.newInstance(optionName);\n            }","sourceCodeStart":33,"sourceCodeEnd":69,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/bootstrap/app-model/src/main/java/io/quarkus/bootstrap/model/JvmOptionsBuilder.java#L33-L69","documentation":"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.","triggerScenarios":"addFromQuarkusExtensionProperty computes an optionGroupPrefix that is neither MutableStandardJvmOption.PROPERTY_GROUP_PREFIX nor MutableXxJvmOption.PROPERTY_GROUP_PREFIX, typically from a typo'd property group segment.","commonSituations":"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.'.","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."],"exampleFix":"// before\nbuilder.addFromQuarkusExtensionProperty(\"quarkus.jvm-options.x.MaxMetaspaceSize\", \"256m\");\n// after\nbuilder.addFromQuarkusExtensionProperty(\"quarkus.jvm-options.xx.MaxMetaspaceSize\", \"256m\");","handlingStrategy":"validation","validationCode":"if (!optionGroupPrefix.equals(MutableStandardJvmOption.PROPERTY_GROUP_PREFIX)\n        && !optionGroupPrefix.equals(MutableXxJvmOption.PROPERTY_GROUP_PREFIX)) {\n    throw new IllegalArgumentException(\"Unsupported option group: \" + optionGroupPrefix);\n}","typeGuard":"static boolean isKnownOptionGroup(String prefix) {\n    return MutableStandardJvmOption.PROPERTY_GROUP_PREFIX.equals(prefix)\n        || MutableXxJvmOption.PROPERTY_GROUP_PREFIX.equals(prefix);\n}","tryCatchPattern":"try {\n    builder.addFromQuarkusExtensionProperty(key, value);\n} catch (IllegalArgumentException e) {\n    if (e.getMessage().startsWith(\"Unrecognized JVM option group prefix\")) {\n        LOG.warnf(\"Skipping JVM option with unknown group: %s\", key);\n        return;\n    }\n    throw e;\n}","preventionTips":["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."],"tags":["jvm-options","configuration","illegal-argument"],"backgroundTag":"unrecognized-jvm-option-group","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}