{"record":{"id":"30e5a2c26c0f3a33","repo":"OpenAPITools/openapi-generator","slug":"helidon-version-s-uses-the-s-namespace-but-optio","errorCode":null,"errorMessage":"Helidon version %s uses the %s namespace but options specified '%s'","messagePattern":"Helidon version (.+?) uses the (.+?) namespace but options specified '(.+?)'","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaHelidonCommonCodegen.java","lineNumber":570,"sourceCode":"            useOptional = true;\n        } else if (useOptionalSetting instanceof Boolean) {\n            useOptional = (Boolean) useOptionalSetting;\n        } else if (useOptionalSetting instanceof String) {\n            useOptional = Boolean.parseBoolean((String) useOptionalSetting);\n        }\n        additionalProperties.put(X_USE_OPTIONAL, useOptional);\n    }\n\n    private String checkAndSelectRootEEPackage(String version) {\n        String packagePrefixImpliedByVersion = usesJakartaPackages(version)\n                ? MICROPROFILE_ROOT_PACKAGE_JAKARTA\n                : MICROPROFILE_ROOT_PACKAGE_JAVAX;\n\n        // Make sure any user-specified root EE package is correct for the chosen Helidon version.\n        if (additionalProperties.containsKey(MICROPROFILE_ROOT_PACKAGE)) {\n            String userRootEEPackage = additionalProperties.get(MICROPROFILE_ROOT_PACKAGE).toString();\n            if (!packagePrefixImpliedByVersion.equals(userRootEEPackage)) {\n                throw new IllegalArgumentException(\n                        String.format(Locale.ROOT,\n                                \"Helidon version %s uses the %s namespace but options specified '%s'\",\n                                version,\n                                packagePrefixImpliedByVersion,\n                                userRootEEPackage));\n            }\n            return userRootEEPackage;\n        }\n\n        // No explicit setting for the root EE package.\n        return packagePrefixImpliedByVersion;\n    }\n\n    private String checkAndSelectRootEEDepPrefix(String version) {\n        String mavenDepPrefixImpliedByVersion = usesJakartaPrefix(version)\n                ? MICROPROFILE_ROOT_PACKAGE_JAKARTA\n                : MICROPROFILE_ROOT_PACKAGE_JAVAX;\n","sourceCodeStart":552,"sourceCodeEnd":588,"githubUrl":"https://github.com/OpenAPITools/openapi-generator/blob/fcec517be3cf5b7964296bcba25fbc97541484e7/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaHelidonCommonCodegen.java#L552-L588","documentation":"Thrown by JavaHelidonCommonCodegen.checkAndSelectRootEEPackage when the user-set rootJavaEEPackage property disagrees with the namespace implied by the chosen Helidon version. Helidon 3.x and earlier use the javax.* MicroProfile root package; Helidon 4.x uses jakarta.*. Because generated imports, pom dependencies, and templates all key off this prefix, an inconsistent override is rejected instead of silently producing broken code.","triggerScenarios":"Passing --additional-properties helidonVersion=4.1.0,rootJavaEEPackage=javax (or helidonVersion=3.2.0,rootJavaEEPackage=jakarta) to -g java-helidon-server or -g java-helidon-client. Also triggered when upgrading helidonVersion from 3.x to 4.x in a config file that already pinned rootJavaEEPackage=javax for the old stack.","commonSituations":"Migrating a Helidon 3 service to Helidon 4: the config that used to need an explicit javax override now conflicts with the jakarta default. Teams targeting legacy javax runtimes on new Helidon versions (unsupported combination) hit it deliberately and must downgrade Helidon instead.","solutions":["Match the namespace to the version: helidon 4.x -> rootJavaEEPackage=jakarta, helidon 3.x -> rootJavaEEPackage=javax","Simplest: remove the rootJavaEEPackage property and let the generator derive it from helidonVersion","If you must keep javax, downgrade helidonVersion to a 3.x release","After a version bump, grep your config templates for stale rootJavaEEPackage entries in CI presets"],"exampleFix":"# before\nopenapi-generator-cli generate -g java-helidon-server -i api.yaml \\\n  --additional-properties helidonVersion=4.1.0,rootJavaEEPackage=javax\n\n# after\nopenapi-generator-cli generate -g java-helidon-server -i api.yaml \\\n  --additional-properties helidonVersion=4.1.0,rootJavaEEPackage=jakarta","handlingStrategy":"validation","validationCode":"String helidonVersion = String.valueOf(opts.get(\"helidonVersion\"));\nString expected = helidonVersion.startsWith(\"4\") || helidonVersion.startsWith(\"3.0\") == false && helidonVersion.startsWith(\"3\") == false ? \"jakarta\" : \"javax\";\n// simpler, matching generator logic: 4.x -> jakarta, else javax\nexpected = helidonVersion.startsWith(\"4\") ? \"jakarta\" : \"javax\";\nString user = (String) opts.get(\"rootJavaEEPackage\");\nif (user != null && !user.equals(expected)) {\n    throw new IllegalArgumentException(\"rootJavaEEPackage=\" + user + \" conflicts with helidonVersion=\" + helidonVersion + \" (needs \" + expected + \")\");\n}","typeGuard":null,"tryCatchPattern":"try {\n    generator.generate();\n} catch (IllegalArgumentException e) {\n    if (e.getMessage() != null && e.getMessage().contains(\"namespace\")) {\n        // namespace/version conflict — instruct user to align rootJavaEEPackage or drop it\n        throw new ConfigException(\"Jakarta/javax mismatch: \" + e.getMessage(), e);\n    }\n    throw e;\n}","preventionTips":["Never set rootJavaEEPackage manually; let helidonVersion drive the namespace","Automate Helidon upgrades by grepping configs for javax/jakarta literals after a version bump","When both rootJavaEEPackage and x-helidon-rootJavaEEDepPrefix appear in a config, validate they agree with the version in a pre-flight check"],"tags":["java","helidon","openapi-generator","jakarta-ee","javax","namespace","configuration","option-validation"],"backgroundTag":"jakarta-javax-namespace-mismatch","analyzedSha":"fcec517be3cf5b7964296bcba25fbc97541484e7","analyzedAt":"2026-08-22T11:13:11.613Z","schemaVersion":2},"datasetVersion":"2026-08-22T14:17:55.899Z"}