skylot/jadx · error · DecodeException
Load method exception: {}: {}
Error message
Load method exception: {}: {} What it means
MethodNode.load() wraps the method code-loading body (register counts, argument init, InsnDecoder processing) in a try/catch. On ANY exception it reloads the method without code (so the method still appears with a decompile-error comment) and then throws DecodeException with the original cause chained.
Source
Thrown at jadx-core/src/main/java/jadx/core/dex/nodes/MethodNode.java:185
this.argsStartReg = codeReader.getArgsStartReg();
initArguments(this.argTypes);
if (contains(AType.JADX_ERROR)) {
// don't load instructions for method with errors
this.instructions = EMPTY_INSN_ARRAY;
} else {
InsnDecoder decoder = new InsnDecoder(this);
this.instructions = decoder.process(codeReader);
}
} catch (Exception e) {
if (!noCode) {
unload();
noCode = true;
// load without code
load();
noCode = false;
}
throw new DecodeException(this, "Load method exception: "
+ e.getClass().getSimpleName() + ": " + e.getMessage(), e);
}
}
public void reload() {
unload();
try {
load();
} catch (DecodeException e) {
throw new JadxRuntimeException("Failed to reload method " + getClass().getName() + "." + getName());
}
}
private void initArguments(List<ArgType> args) {
int pos = getArgsStartPos(args);
TypeUtils typeUtils = root().getTypeUtils();
if (accFlags.isStatic()) {
thisArg = null;View on GitHub (pinned to e738a26571)
Solutions
- Upgrade JADX.
- Rely on the automatic no-code fallback — the method will still appear in output as a stub.
- Use --show-bad-code to maximize recovered methods.
- Report the method and chained cause upstream.
Defensive patterns
Strategy: fallback
Try / catch
// MethodNode already auto-falls-back to a no-code stub; catch the DecodeException
// to keep the method's signature in output.
try {
String code = cls.decompile();
} catch (DecodeException e) {
log.warn("Method body decode failed; method shown as stub: {}", e.getMessage());
} Prevention
- Rely on JADX's built-in no-code fallback — the method signature is preserved.
- Use --show-bad-code to maximize recovered method bodies.
- Examine the chained cause to locate the failing instruction.
When it happens
Trigger: Any exception during instruction decoding (e.g. errors 100-106, 108-110), register-count mismatches, or argument initialization failures. The method is automatically degraded to a no-code stub before the exception is re-thrown.
Common situations: Corrupt method bytecode, unsupported instructions, or obfuscation. The method's signature is still usable; only the body fails.
Related errors
- Failed to open zip: {}
- Failed to decode insn: {}
- Unknown instruction: '{}'
- Failed to load method reference for insn: {}
- Failed to get call site for insn: {}
AI-assisted analysis of skylot/jadx@e738a26571 (2026-08-14).
Data as JSON: /api/errors/8fe4f0dce3470c92.
Report an issue: GitHub.