{"record":{"id":"9c683cfcfe7581f0","repo":"skylot/jadx","slug":"malformed-requiredjadxversion","errorCode":null,"errorMessage":"Malformed 'requiredJadxVersion': {}","messagePattern":"Malformed 'requiredJadxVersion': (.+?)","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"jadx-core/src/main/java/jadx/core/plugins/versions/VerifyRequiredVersion.java","lineNumber":20,"sourceCode":"\nimport java.util.regex.Matcher;\nimport java.util.regex.Pattern;\n\nimport org.jetbrains.annotations.Nullable;\n\nimport jadx.core.Jadx;\n\npublic class VerifyRequiredVersion {\n\n\tpublic static boolean isJadxCompatible(@Nullable String reqVersionStr) {\n\t\treturn new VerifyRequiredVersion().isCompatible(reqVersionStr);\n\t}\n\n\tpublic static void verify(String requiredJadxVersion) {\n\t\ttry {\n\t\t\tparse(requiredJadxVersion);\n\t\t} catch (Exception e) {\n\t\t\tthrow new IllegalArgumentException(\"Malformed 'requiredJadxVersion': \" + e.getMessage(), e);\n\t\t}\n\t}\n\n\tprivate final String jadxVersion;\n\tprivate final boolean unstable;\n\n\tprivate final boolean dev;\n\n\tpublic VerifyRequiredVersion() {\n\t\tthis(Jadx.getVersion());\n\t}\n\n\tpublic VerifyRequiredVersion(String jadxVersion) {\n\t\tthis.jadxVersion = jadxVersion;\n\t\tthis.unstable = jadxVersion.startsWith(\"r\");\n\t\tthis.dev = jadxVersion.equals(Jadx.VERSION_DEV);\n\t}\n","sourceCodeStart":2,"sourceCodeEnd":38,"githubUrl":"https://github.com/skylot/jadx/blob/e738a26571d02919f01df40de93bc9a44dee4e18/jadx-core/src/main/java/jadx/core/plugins/versions/VerifyRequiredVersion.java#L2-L38","documentation":"Thrown by VerifyRequiredVersion.verify when parsing the plugin's requiredJadxVersion string raises any exception (it re-throws the inner exception, typically the one from error 193). It signals that the plugin declared a requiredJadxVersion that does not match the expected format (\\d+\\.\\d+\\.\\d+,\\s+r\\d+). It is an IllegalArgumentException, raised during plugin loading.","triggerScenarios":"A plugin's metadata (JadxPluginInfo.requiredJadxVersion) contains a string like '1.4', 'v1.4.0', or '1.4.0' without the ', rNNN' unstable revision suffix. verify() calls parse() which throws RuntimeException (193); verify() catches and re-wraps as this IllegalArgumentException.","commonSituations":"Hand-written plugin descriptors, plugins built against very old jadx that used a different version format, or typos in the required-version field. Distinct from 'version too old' (handled by isCompatible returning false): this is a malformed metadata string.","solutions":["Set the plugin's requiredJadxVersion to the exact format '<semver>, r<rev>' (e.g. '1.5.0, r1234').","If you do not control the plugin, contact its author or pin to a plugin version with a correct descriptor.","Run with a dev jadx build (Jadx.VERSION_DEV) which short-circuits the compatibility check after parsing.","Ensure the version string has no surrounding quotes or whitespace beyond the single optional space after the comma."],"exampleFix":"// before\ninfo.setRequiredJadxVersion(\"1.5.0\");\n// after\ninfo.setRequiredJadxVersion(\"1.5.0, r1234\");","handlingStrategy":"validation","validationCode":"// validate the plugin descriptor before registering\nprivate static final Pattern REQ =\n    Pattern.compile(\"(\\\\d+\\\\.\\\\d+\\\\.\\\\d+),\\\\s+(r\\\\d+)\");\nString v = pluginInfo.getRequiredJadxVersion();\nif (v != null && !v.isEmpty() && !REQ.matcher(v).matches()) {\n    throw new IllegalStateException(\"bad requiredJadxVersion: \" + v);\n}","typeGuard":null,"tryCatchPattern":"try {\n    VerifyRequiredVersion.verify(pluginInfo.getRequiredJadxVersion());\n} catch (IllegalArgumentException e) {\n    LOG.error(\"plugin {} has bad requiredJadxVersion\", pluginInfo.getPluginId(), e);\n}","preventionTips":["Format requiredJadxVersion as '<semver>, r<rev>' (e.g. '1.5.0, r1234').","Validate the descriptor string before loading the plugin.","Run on a dev jadx build to short-circuit the check during plugin development."],"tags":["plugins","version","metadata","validation","configuration"],"backgroundTag":null,"analyzedSha":"e738a26571d02919f01df40de93bc9a44dee4e18","analyzedAt":"2026-08-14T00:10:24.238Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}