pxb1988 / dex2jar

Tools to work with android .dex and java .class files
Apache License 2.0
12.35k stars 2.12k forks source link

java.lang.RuntimeException: can not merge I and L #106

Open olivernott opened 7 years ago

olivernott commented 7 years ago

There are 4 classes in the APK that include methods that are right at the 64k limit. When these are translated to standard class files the code exceeds the size limit and dex2jar fails.

This file is generated by dex2jar

Please report this file to one of following link if possible (any one). https://sourceforge.net/p/dex2jar/tickets/ https://bitbucket.org/pxb1988/dex2jar/issues https://github.com/pxb1988/dex2jar/issues [no attachment support, not preferred] dex2jar@googlegroups.com

There are 2 methods fail to translate. 2016-10-04 10:53:47 UTC version: [dex-reader-2.1-SNAPSHOT, dex-reader-api-2.1-SNAPSHOT, dex-ir-2.1-SNAPSHOT, d2j-smali-2.1-SNAPSHOT, d2j-base-cmd-2.1-SNAPSHOT, dex-tools-2.1-SNAPSHOT, dex-translator-2.1-SNAPSHOT] cmdline: [-r, -o, /private/var/folders/sf/nh1jlm4d6x9bwpkwp5j2yy_00000gp/T/4147486930243552589/apk/output.jar, /Users/xxxx/temp/app.apk] env: java.runtime.name: Java(TM) SE Runtime Environment java.vm.version: 24.80-b11 java.vm.vendor: Oracle Corporation java.vendor.url: http://java.oracle.com/ java.vm.name: Java HotSpot(TM) 64-Bit Server VM java.vm.specification.name: Java Virtual Machine Specification java.runtime.version: 1.7.0_80-b15 java.awt.graphicsenv: sun.awt.CGraphicsEnvironment java.endorsed.dirs: /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/jre/lib/endorsed java.io.tmpdir: /var/folders/sf/nh1jlm4d6x9bwpkwp5j2yy_00000gp/T/ java.vm.specification.vendor: Oracle Corporation java.library.path: /Users/xxx/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:. java.specification.name: Java Platform API Specification java.class.version: 51.0 java.awt.printerjob: sun.lwawt.macosx.CPrinterJob java.specification.version: 1.7 java.class.path: .:/Applications/Android/tools/dex2jar-2.0/lib/ST4-4.0.8.jar:/Applications/Android/tools/dex2jar-2.0/lib/antlr-3.5.2.jar:/Applications/Android/tools/dex2jar-2.0/lib/antlr-runtime-3.5.2.jar:/Applications/Android/tools/dex2jar-2.0/lib/antlr4-4.5.jar:/Applications/Android/tools/dex2jar-2.0/lib/antlr4-runtime-4.5.jar:/Applications/Android/tools/dex2jar-2.0/lib/asm-debug-all-5.0.3.jar:/Applications/Android/tools/dex2jar-2.0/lib/d2j-base-cmd-2.1-SNAPSHOT.jar:/Applications/Android/tools/dex2jar-2.0/lib/d2j-jasmin-2.1-SNAPSHOT.jar:/Applications/Android/tools/dex2jar-2.0/lib/d2j-smali-2.1-SNAPSHOT.jar:/Applications/Android/tools/dex2jar-2.0/lib/dex-ir-2.1-SNAPSHOT.jar:/Applications/Android/tools/dex2jar-2.0/lib/dex-reader-2.1-SNAPSHOT.jar:/Applications/Android/tools/dex2jar-2.0/lib/dex-reader-api-2.1-SNAPSHOT.jar:/Applications/Android/tools/dex2jar-2.0/lib/dex-tools-2.1-SNAPSHOT.jar:/Applications/Android/tools/dex2jar-2.0/lib/dex-translator-2.1-SNAPSHOT.jar:/Applications/Android/tools/dex2jar-2.0/lib/dex-writer-2.1-SNAPSHOT.jar:/Applications/Android/tools/dex2jar-2.0/lib/dx-23.0.0.jar:/Applications/Android/tools/dex2jar-2.0/lib/org.abego.treelayout.core-1.0.1.jar java.vm.specification.version: 1.7 java.home: /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/jre java.specification.vendor: Oracle Corporation java.vm.info: mixed mode java.version: 1.7.0_80 java.ext.dirs: /Users/xxx/Library/Java/Extensions:/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/jre/lib/ext:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java java.vendor: Oracle Corporation java.vendor.url.bug: http://bugreport.sun.com/bugreport/

================= 0 =================== Lutil/a/z/u/b$a;.a(Lutil/a/z/u/b$a;I)I java.lang.RuntimeException: can not merge I and L at com.googlecode.dex2jar.ir.TypeClass.merge(TypeClass.java:104) at com.googlecode.dex2jar.ir.ts.TypeTransformer$TypeRef.updateTypeClass(TypeTransformer.java:287) at com.googlecode.dex2jar.ir.ts.TypeTransformer$TypeAnalyze.copyTypes(TypeTransformer.java:517) at com.googlecode.dex2jar.ir.ts.TypeTransformer$TypeAnalyze.fixTypes(TypeTransformer.java:371) at com.googlecode.dex2jar.ir.ts.TypeTransformer$TypeAnalyze.analyze(TypeTransformer.java:349) at com.googlecode.dex2jar.ir.ts.TypeTransformer.transform(TypeTransformer.java:44) at com.googlecode.d2j.dex.Dex2jar$2.optimize(Dex2jar.java:162) at com.googlecode.d2j.dex.Dex2Asm.convertCode(Dex2Asm.java:442) at com.googlecode.d2j.dex.ExDex2Asm.convertCode(ExDex2Asm.java:42) at com.googlecode.d2j.dex.Dex2jar$2.convertCode(Dex2jar.java:129) at com.googlecode.d2j.dex.Dex2Asm.convertMethod(Dex2Asm.java:537) at com.googlecode.d2j.dex.Dex2Asm.convertClass(Dex2Asm.java:434) at com.googlecode.d2j.dex.Dex2Asm.convertDex(Dex2Asm.java:450) at com.googlecode.d2j.dex.Dex2jar.doTranslate(Dex2jar.java:123) at com.googlecode.d2j.dex.Dex2jar.to(Dex2jar.java:272) at com.googlecode.dex2jar.tools.Dex2jarCmd.doCommandLine(Dex2jarCmd.java:107) at com.googlecode.dex2jar.tools.BaseCmd.doMain(BaseCmd.java:290) at com.googlecode.dex2jar.tools.Dex2jarCmd.main(Dex2jarCmd.java:33)

.method static synthetic a(Lutil/a/z/u/b$a;I)I .registers 2 return p0 .end method

================= 1 =================== Lutil/a/z/bn/a;.a(Lutil/a/z/bn/a;I)I java.lang.RuntimeException: can not merge I and L at com.googlecode.dex2jar.ir.TypeClass.merge(TypeClass.java:104) at com.googlecode.dex2jar.ir.ts.TypeTransformer$TypeRef.updateTypeClass(TypeTransformer.java:287) at com.googlecode.dex2jar.ir.ts.TypeTransformer$TypeAnalyze.copyTypes(TypeTransformer.java:517) at com.googlecode.dex2jar.ir.ts.TypeTransformer$TypeAnalyze.fixTypes(TypeTransformer.java:371) at com.googlecode.dex2jar.ir.ts.TypeTransformer$TypeAnalyze.analyze(TypeTransformer.java:349) at com.googlecode.dex2jar.ir.ts.TypeTransformer.transform(TypeTransformer.java:44) at com.googlecode.d2j.dex.Dex2jar$2.optimize(Dex2jar.java:162) at com.googlecode.d2j.dex.Dex2Asm.convertCode(Dex2Asm.java:442) at com.googlecode.d2j.dex.ExDex2Asm.convertCode(ExDex2Asm.java:42) at com.googlecode.d2j.dex.Dex2jar$2.convertCode(Dex2jar.java:129) at com.googlecode.d2j.dex.Dex2Asm.convertMethod(Dex2Asm.java:537) at com.googlecode.d2j.dex.Dex2Asm.convertClass(Dex2Asm.java:434) at com.googlecode.d2j.dex.Dex2Asm.convertDex(Dex2Asm.java:450) at com.googlecode.d2j.dex.Dex2jar.doTranslate(Dex2jar.java:123) at com.googlecode.d2j.dex.Dex2jar.to(Dex2jar.java:272) at com.googlecode.dex2jar.tools.Dex2jarCmd.doCommandLine(Dex2jarCmd.java:107) at com.googlecode.dex2jar.tools.BaseCmd.doMain(BaseCmd.java:290) at com.googlecode.dex2jar.tools.Dex2jarCmd.main(Dex2jarCmd.java:33)

.method static synthetic a(Lutil/a/z/bn/a;I)I .registers 2 return p0 .end method

olivernott commented 7 years ago

Similar to: Error report when using dex2jar #29