【问题标题】:java heap size error dex2jar android decompile solution?java heap size error dex2jar android反编译解决办法?
【发布时间】:2013-05-06 00:18:36
【问题描述】:

我正在处理一个 android 项目,但我的笔记本电脑已格式化,所以我丢失了所有代码,但我的手机上有一个已签名的文件 apk .. 每当我尝试使用 dex2jar 时,它会停止转换,出现此错误。我怎样才能增加堆大小或有其他出路。我可以用它签名的密钥反编译一个apk吗

C:\~dex2jar>d2j-dex2jar --force
classes.dex
dex2jar classes.dex -> classes-dex2jar.jar
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at org.objectweb.asm.Type.getInternalName(Unknown Source)
    at com.googlecode.dex2jar.v3.V3ClassAdapter.searchEnclosing(V3ClassAdapt
er.java:179)
    at com.googlecode.dex2jar.v3.V3ClassAdapter.build(V3ClassAdapter.java:13
0)
    at com.googlecode.dex2jar.v3.V3ClassAdapter.visitField(V3ClassAdapter.ja
va:303)
    at com.googlecode.dex2jar.reader.DexFileReader.acceptField(DexFileReader
.java:603)
    at com.googlecode.dex2jar.reader.DexFileReader.acceptClass(DexFileReader
.java:439)
    at com.googlecode.dex2jar.reader.DexFileReader.accept(DexFileReader.java
:330)
    at com.googlecode.dex2jar.v3.Dex2jar.doTranslate(Dex2jar.java:84)
    at com.googlecode.dex2jar.v3.Dex2jar.to(Dex2jar.java:239)
    at com.googlecode.dex2jar.v3.Dex2jar.to(Dex2jar.java:230)
    at com.googlecode.dex2jar.tools.Dex2jarCmd.doCommandLine(Dex2jarCmd.java
:109)
    at com.googlecode.dex2jar.tools.BaseCmd.doMain(BaseCmd.java:168)
    at com.googlecode.dex2jar.tools.Dex2jarCmd.main(Dex2jarCmd.java:34)

【问题讨论】:

    标签: java android jar dex dex2jar


    【解决方案1】:

    复制d2j-dex2jar.bat 文件并进行编辑。找到这样的行:

    java -Xms512m -Xmx1024m -cp "%CLASSPATH%" 
                "com.googlecode.dex2jar.tools.Dex2jarCmd" %*
    

    更改-Xmx 参数以给自己更大的maxheap 大小。保存它,看看你修改后的 BAT 文件是否效果更好。 (没有一种优雅的方法可以覆盖此脚本中的 JVM 设置。)


    显然...如果您使用的是dex2jar-2.0,您需要编辑的文件是d2j_invoke.bat

    【讨论】:

    • 我试过这个但它给了我另一个错误 dex2jar classes.dex -> classes-dex2jar.jar # # Java Runtime Environment 没有足够的内存继续。 # Native memory allocation (malloc) failed toallocate 1863680 bytes for card table expansion # 一个包含更多信息的错误报告文件保存为:# C:~dex2jar-0.0.9.13\hs_err_pid6240.log
    • 您没有足够的物理内存/交换空间来使堆变大。尝试更小的东西。这种方法可能根本行不通。也许你需要弄清楚为什么 dex2jar 使用了这么多内存,并对其进行修改。 (可能是内存泄漏……)
    • 找不到该行。 @"%~dp0d2j_invoke.bat" com.googlecode.dex2jar.tools.Dex2jarCmd %*
    【解决方案2】:

    如果你使用dex2jar-2.0,你可以找到这样的行:

    java -Xms512m -Xmx1024m ******************************* 在 d2j_invoke.bat 而不是 d2j_dex2jar.bat 中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-15
      • 1970-01-01
      • 1970-01-01
      • 2015-12-26
      • 2013-08-17
      • 2012-03-27
      • 1970-01-01
      • 2022-11-05
      相关资源
      最近更新 更多