{"record":{"id":"9ba730818d1381bb","repo":"skylot/jadx","slug":"unknown-type-string","errorCode":null,"errorMessage":"Unknown type string: \"{}\"","messagePattern":"Unknown type string: \"(.+?)\"","errorType":"exception","errorClass":"JadxRuntimeException","httpStatus":null,"severity":"error","filePath":"jadx-core/src/main/java/jadx/core/dex/instructions/args/ArgType.java","lineNumber":756,"sourceCode":"\t\t}\n\t\treturn OBJECT;\n\t}\n\n\tpublic static ArgType parse(String type) {\n\t\tif (type == null || type.isEmpty()) {\n\t\t\tthrow new JadxRuntimeException(\"Failed to parse type string: \" + type);\n\t\t}\n\t\tchar f = type.charAt(0);\n\t\tswitch (f) {\n\t\t\tcase 'L':\n\t\t\t\treturn object(type);\n\t\t\tcase 'T':\n\t\t\t\treturn genericType(type.substring(1, type.length() - 1));\n\t\t\tcase '[':\n\t\t\t\treturn array(parse(type.substring(1)));\n\t\t\tdefault:\n\t\t\t\tif (type.length() != 1) {\n\t\t\t\t\tthrow new JadxRuntimeException(\"Unknown type string: \\\"\" + type + '\"');\n\t\t\t\t}\n\t\t\t\treturn parse(f);\n\t\t}\n\t}\n\n\tpublic static ArgType parse(char f) {\n\t\tswitch (f) {\n\t\t\tcase 'Z':\n\t\t\t\treturn BOOLEAN;\n\t\t\tcase 'B':\n\t\t\t\treturn BYTE;\n\t\t\tcase 'C':\n\t\t\t\treturn CHAR;\n\t\t\tcase 'S':\n\t\t\t\treturn SHORT;\n\t\t\tcase 'I':\n\t\t\t\treturn INT;\n\t\t\tcase 'J':","sourceCodeStart":738,"sourceCodeEnd":774,"githubUrl":"https://github.com/skylot/jadx/blob/e738a26571d02919f01df40de93bc9a44dee4e18/jadx-core/src/main/java/jadx/core/dex/instructions/args/ArgType.java#L738-L774","documentation":"ArgType.parse(String): the type string does not start with L, T, or [ (so it is not an object/generic/array), AND its length is not 1 (so it cannot be a single primitive char). A multi-character string with an unknown leading char is invalid.","triggerScenarios":"A type descriptor like 'Xjava/Foo;' or '12' — a multi-character string whose first character is not a recognized type prefix.","commonSituations":"Corrupt or hand-edited type descriptors, obfuscators that mangle type strings, or a Signature attribute that is not a valid JVM type signature.","solutions":["Upgrade JADX.","Inspect the offending type string and its source location (field/method/class).","Validate descriptors with baksmali.","Report the malformed type string upstream."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Pre-check that every type descriptor is a valid JVM type signature.\nstatic boolean isValidDescriptor(String s) {\n    if (s == null || s.isEmpty()) return false;\n    char c = s.charAt(0);\n    return c == 'L' && s.endsWith(\";\") || c == '[' || \"ZBCSIJFDV\".indexOf(c) >= 0 && s.length() == 1;\n}","typeGuard":null,"tryCatchPattern":"try {\n    jadx.load();\n} catch (JadxRuntimeException e) {\n    if (e.getMessage().contains(\"Unknown type string\")) {\n        log.warn(\"Malformed multi-char type descriptor\", e);\n    } else throw e;\n}","preventionTips":["Validate type descriptors against the JVM signature grammar before decompiling.","Inspect malformed signatures reported in the error message.","Keep JADX updated."],"tags":["argtype","type-descriptor","malformed-input"],"backgroundTag":null,"analyzedSha":"e738a26571d02919f01df40de93bc9a44dee4e18","analyzedAt":"2026-08-14T00:10:24.238Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}