有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

将字节码转换为dex:com时发生java错误。安卓dx。rop。科技委。CstFieldRef无法转换为com。安卓dx。rop。科技委。CstString

我在将同事的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.安卓.dx.command.dexer.Main.processClass(Main.java:775)\n\tat com.安卓.dx.command.dexer.Main.processFileBytes(Main.java:741)\n\tat com.安卓.dx.command.dexer.Main.access$1200(Main.java:88)\n\tat com.安卓.dx.command.dexer.Main$FileBytesConsumer.processFileBytes(Main.java:1683)\n\tat com.安卓.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)\n\tat com.安卓.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)\n\tat com.安卓.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)\n\tat com.安卓.dx.command.dexer.Main.processOne(Main.java:695)\n\tat com.安卓.dx.command.dexer.Main.processAllFiles(Main.java:592)\n\tat com.安卓.dx.command.dexer.Main.runMultiDex(Main.java:376)\n\tat com.安卓.dx.command.dexer.Main.run(Main.java:290)\n\tat com.安卓.builder.internal.compiler.DexWrapper.run(DexWrapper.java:54)\n\tat com.安卓.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.安卓.dx.cf.iface.ParseException: com.安卓.dx.rop.cst.CstFieldRef cannot be cast to com.安卓.dx.rop.cst.CstString\n\tat com.安卓.dx.cf.direct.MemberListParser.parse(MemberListParser.java:231)\n\tat com.安卓.dx.cf.direct.MemberListParser.parseIfNecessary(MemberListParser.java:108)\n\tat com.安卓.dx.cf.direct.FieldListParser.getList(FieldListParser.java:54)\n\tat com.安卓.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:536)\n\tat com.安卓.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)\n\tat com.安卓.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)\n\tat com.安卓.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)\n\tat com.安卓.dx.command.dexer.Main.parseClass(Main.java:787)\n\tat com.安卓.dx.command.dexer.Main.access$1600(Main.java:88)\n\tat com.安卓.dx.command.dexer.Main$ClassParserTask.call(Main.java:1722)\n\tat com.安卓.dx.command.dexer.Main.processClass(Main.java:773)\n\t... 16 more\nCaused by: java.lang.ClassCastException: com.安卓.dx.rop.cst.CstFieldRef cannot be cast to com.安卓.dx.rop.cst.CstString\n\tat com.安卓.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.安卓.build.api.transform.TransformException: java.lang.RuntimeException: java.lang.RuntimeException: com.安卓.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.安卓.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.安卓.dx.command.dexer.Main.processClass(Main.java:775)
at com.安卓.dx.command.dexer.Main.processFileBytes(Main.java:741)
at com.安卓.dx.command.dexer.Main.access$1200(Main.java:88)
at com.安卓.dx.command.dexer.Main$FileBytesConsumer.processFileBytes(Main.java:1683)
at com.安卓.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
at com.安卓.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
at com.安卓.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
at com.安卓.dx.command.dexer.Main.processOne(Main.java:695)
at com.安卓.dx.command.dexer.Main.processAllFiles(Main.java:592)
at com.安卓.dx.command.dexer.Main.runMultiDex(Main.java:376)
at com.安卓.dx.command.dexer.Main.run(Main.java:290)
at com.安卓.builder.internal.compiler.DexWrapper.run(DexWrapper.java:54)
at com.安卓.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.安卓.dx.cf.iface.ParseException: com.安卓.dx.rop.cst.CstFieldRef cannot be cast to com.安卓.dx.rop.cst.CstString
at com.安卓.dx.cf.direct.MemberListParser.parse(MemberListParser.java:231)
at com.安卓.dx.cf.direct.MemberListParser.parseIfNecessary(MemberListParser.java:108)
at com.安卓.dx.cf.direct.FieldListParser.getList(FieldListParser.java:54)
at com.安卓.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:536)
at com.安卓.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)
at com.安卓.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)
at com.安卓.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)
at com.安卓.dx.command.dexer.Main.parseClass(Main.java:787)
at com.安卓.dx.command.dexer.Main.access$1600(Main.java:88)
at com.安卓.dx.command.dexer.Main$ClassParserTask.call(Main.java:1722)
at com.安卓.dx.command.dexer.Main.processClass(Main.java:773)
... 16 more
Caused by: java.lang.ClassCastException: com.安卓.dx.rop.cst.CstFieldRef cannot be cast to com.安卓.dx.rop.cst.CstString
at com.安卓.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”

共 (1) 个答案

  1. # 1 楼答案

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

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