pxb1988/dex2jar · error · RuntimeException

not support st:

Error message

not support st: 

What it means

Internal gap in IR2JConverter.reBuildInstructions while emitting JVM bytecode for an IR statement: the statement type (appended after 'not support st: ') has no case in the conversion switch, so dex2jar's IR cannot be lowered to class-file bytecode for that construct. It signals an unimplemented IR-statement-to-ASM mapping inside the tool.

Solutions

  1. Report the statement type shown in the message together with the input dex/jar to the dex2jar issue tracker
  2. Try a newer dex2jar build where additional statement types are handled
  3. Skip the affected class to obtain partial translation output
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at dex-translator/src/main/java/com/googlecode/d2j/converter/IR2JConverter.java:471 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of pxb1988/dex2jar@b5bda4fb49 (2026-09-08). Data as JSON: /api/errors/1f0015c7edbd8c4c. Report an issue: GitHub.

Appendix: source

Thrown at dex-translator/src/main/java/com/googlecode/d2j/converter/IR2JConverter.java:471

                accept(op, asm);

                String ret = op.valueType;
                if (op.vt == VT.INVOKE_NEW) {
                    asm.visitInsn(POP);
                } else if (!"V".equals(ret)) {
                    switch (ret.charAt(0)) {
                        case 'J':
                        case 'D':
                            asm.visitInsn(POP2);
                            break;
                        default:
                            asm.visitInsn(POP);
                            break;
                    }
                }
                break;
            default:
                throw new RuntimeException("not support st: " + st.st);
            }

        }
    }

    private void constLargeArray(MethodVisitor asm, byte[] data, String elementType) {
        String cst = hexEncode(data);
        if (cst.length() > 65535) { // asm have the limit
            asm.visitTypeInsn(Opcodes.NEW, "java/lang/StringBuilder");
            asm.visitInsn(Opcodes.DUP);
            asm.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/lang/StringBuilder", "<init>", "()V", false);

            for (int i = 0; i < cst.length(); i += 65500) {
                int a = Math.min(65500, cst.length() - i);
                asm.visitLdcInsn(cst.substring(i, i + a));
                asm.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/StringBuilder",
                        "append",
                        "(Ljava/lang/String;)Ljava/lang/StringBuilder;",

View on GitHub (pinned to b5bda4fb49)