gpt4 book ai didi

java - 将字节码转换为 dex 时出错 : com. android.dx.rop.cst.CstFieldRef 无法转换为 com.android.dx.rop.cst.CstString

转载 作者:行者123 更新时间:2023-11-30 00:45:03 27 4
gpt4 key购买 nike

我在将同事的 Android 源代码编译为 APK 时遇到问题。这是控制台中显示的错误

:app:transformClassesWithDexForDebug
AGPBI: {"kind":"error","text":"Error converting bytecode to dex:\nCause: java.lang.RuntimeException: Exception parsing classes","sources":[{}],"original":"UNEXPECTED TOP-LEVEL EXCEPTION:\njava.lang.RuntimeException: Exception parsing classes\n\tat com.android.dx.command.dexer.Main.processClass(Main.java:775)\n\tat com.android.dx.command.dexer.Main.processFileBytes(Main.java:741)\n\tat com.android.dx.command.dexer.Main.access$1200(Main.java:88)\n\tat com.android.dx.command.dexer.Main$FileBytesConsumer.processFileBytes(Main.java:1683)\n\tat com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)\n\tat com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)\n\tat com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)\n\tat com.android.dx.command.dexer.Main.processOne(Main.java:695)\n\tat com.android.dx.command.dexer.Main.processAllFiles(Main.java:592)\n\tat com.android.dx.command.dexer.Main.runMultiDex(Main.java:376)\n\tat com.android.dx.command.dexer.Main.run(Main.java:290)\n\tat com.android.builder.internal.compiler.DexWrapper.run(DexWrapper.java:54)\n\tat com.android.builder.core.DexByteCodeConverter.lambda$dexInProcess$0(DexByteCodeConverter.java:173)\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\n\tat java.lang.Thread.run(Thread.java:745)\nCaused by: com.android.dx.cf.iface.ParseException: com.android.dx.rop.cst.CstFieldRef cannot be cast to com.android.dx.rop.cst.CstString\n\tat com.android.dx.cf.direct.MemberListParser.parse(MemberListParser.java:231)\n\tat com.android.dx.cf.direct.MemberListParser.parseIfNecessary(MemberListParser.java:108)\n\tat com.android.dx.cf.direct.FieldListParser.getList(FieldListParser.java:54)\n\tat com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:536)\n\tat com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)\n\tat com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)\n\tat com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)\n\tat com.android.dx.command.dexer.Main.parseClass(Main.java:787)\n\tat com.android.dx.command.dexer.Main.access$1600(Main.java:88)\n\tat com.android.dx.command.dexer.Main$ClassParserTask.call(Main.java:1722)\n\tat com.android.dx.command.dexer.Main.processClass(Main.java:773)\n\t... 16 more\nCaused by: java.lang.ClassCastException: com.android.dx.rop.cst.CstFieldRef cannot be cast to com.android.dx.rop.cst.CstString\n\tat com.android.dx.cf.direct.MemberListParser.parse(MemberListParser.java:190)\n\t... 26 more\n","tool":"Dex"}
AGPBI: {"kind":"error","text":"1 error; aborting","sources":[{}]}

FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: java.lang.RuntimeException: java.lang.RuntimeException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: Return code 1 for dex process

展开后异常

AGPBI: {"kind":"error","text":"Error converting bytecode to dex:
Cause: java.lang.RuntimeException: Exception parsing classes","sources":[{}],"original":"UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.RuntimeException: Exception parsing classes
at com.android.dx.command.dexer.Main.processClass(Main.java:775)
at com.android.dx.command.dexer.Main.processFileBytes(Main.java:741)
at com.android.dx.command.dexer.Main.access$1200(Main.java:88)
at com.android.dx.command.dexer.Main$FileBytesConsumer.processFileBytes(Main.java:1683)
at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
at com.android.dx.command.dexer.Main.processOne(Main.java:695)
at com.android.dx.command.dexer.Main.processAllFiles(Main.java:592)
at com.android.dx.command.dexer.Main.runMultiDex(Main.java:376)
at com.android.dx.command.dexer.Main.run(Main.java:290)
at com.android.builder.internal.compiler.DexWrapper.run(DexWrapper.java:54)
at com.android.builder.core.DexByteCodeConverter.lambda$dexInProcess$0(DexByteCodeConverter.java:173)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: com.android.dx.cf.iface.ParseException: com.android.dx.rop.cst.CstFieldRef cannot be cast to com.android.dx.rop.cst.CstString
at com.android.dx.cf.direct.MemberListParser.parse(MemberListParser.java:231)
at com.android.dx.cf.direct.MemberListParser.parseIfNecessary(MemberListParser.java:108)
at com.android.dx.cf.direct.FieldListParser.getList(FieldListParser.java:54)
at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:536)
at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)
at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)
at com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)
at com.android.dx.command.dexer.Main.parseClass(Main.java:787)
at com.android.dx.command.dexer.Main.access$1600(Main.java:88)
at com.android.dx.command.dexer.Main$ClassParserTask.call(Main.java:1722)
at com.android.dx.command.dexer.Main.processClass(Main.java:773)
... 16 more
Caused by: java.lang.ClassCastException: com.android.dx.rop.cst.CstFieldRef cannot be cast to com.android.dx.rop.cst.CstString
at com.android.dx.cf.direct.MemberListParser.parse(MemberListParser.java:190)
... 26 more","tool":"Dex"}

它在我同事的笔记本电脑上运行正常。

我的配置:

  • Android Studio 2.2.3
  • Java 版本“1.8.0_111”

我同事的配置:

  • Android Studio 2.2.3
  • Java 版本“1.7.0_45”

最佳答案

https://code.google.com/p/android/issues/detail?id=189556
在这个链接中说问题:Android Studio 不支持 1.8 java,我有同样的问题。我使用 1.8 java 但他建议更改目标版本,我在 gradle 中更改但没有用。我没有测试将 1.8 更改为 1.7,也许有帮助。

编辑 1:
我清理项目并解决问题。

关于java - 将字节码转换为 dex 时出错 : com. android.dx.rop.cst.CstFieldRef 无法转换为 com.android.dx.rop.cst.CstString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41952961/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com