添加jar文件后的Android Studio preDexDebug [英] Android Studio preDexDebug After Adding jar File

查看:135
本文介绍了添加jar文件后的Android Studio preDexDebug的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个自己的框架,我用于课堂上的任务(学校课程,而不是Java课程),我把它变成了 .jar 文件,所以每当我对框架进行更改时,我都可以将其拖放到Android Studio中。在过去的5个左右的课程任务中,一切都运行良好,现在突然间我在解析 .jar时遇到 preDexDebug失败错误单击运行后。我在一个空白项目上测试了这个。该项目共有2个 .jar s:Gson和我自己的jar。在我拉入自己的 .jar 之后,它打印出 preDexDebug失败 ...我已经为此摔跤了两个令人愤怒的时间,我不知道我能做些什么来解决这个问题...

I have a framework of my own that I use for in-class tasks (school class, not Java class), and I made it into a .jar file so that whenever I make changes to the framework, I can just drag and drop it into Android Studio. Everything worked well for the past 5 or so class tasks, and now all of a sudden I'm getting a preDexDebug failed error when parsing my .jar after clicking run. I tested this on a blank project. The project has a total of 2 .jars: Gson, and my own jar. It prints out preDexDebug failed right after I pull in my own .jar... I've wrestled with this for two infuriating hours, and I don't know what I can do to fix this at all...

我尝试过重建,清洁,检查 gradle.build 表示重复项,多次复制项目,以及多次编译和复制 .jar

I've tried rebuilding, cleaning, checking gradle.build for duplicates, replicating the project multiple times, and also compiling and copying the .jar multiple times as well.

Ubuntu x64,64位Oracle JDK 1.8.0_31。使用与JDK捆绑在一起的Java

Ubuntu x64 with 64 bit Oracle JDK 1.8.0_31. Using Java bundled with the JDK

Android Studio输出:

Android Studio output:

Configuration on demand is an incubating feature.
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:compileDebugNdk UP-TO-DATE
:app:checkDebugManifest
:app:preReleaseBuild UP-TO-DATE
:app:prepareComAndroidSupportAppcompatV72103Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42103Library UP-TO-DATE
:app:prepareDebugDependencies
:app:compileDebugAidl UP-TO-DATE
:app:compileDebugRenderscript UP-TO-DATE
:app:generateDebugBuildConfig UP-TO-DATE
:app:generateDebugAssets UP-TO-DATE
:app:mergeDebugAssets UP-TO-DATE
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources UP-TO-DATE
:app:mergeDebugResources UP-TO-DATE
:app:processDebugManifest UP-TO-DATE
:app:processDebugResources UP-TO-DATE
:app:generateDebugSources UP-TO-DATE
:app:compileDebugJava
:app:preDexDebug
AGPBI: {"kind":"SIMPLE","text":"UNEXPECTED TOP-LEVEL EXCEPTION:","position":{},"original":"UNEXPECTED TOP-LEVEL EXCEPTION:"}
AGPBI: {"kind":"SIMPLE","text":"com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)","position":{},"original":"com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:472)","position":{},"original":"\tat com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:472)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)","position":{},"original":"\tat com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)","position":{},"original":"\tat com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)","position":{},"original":"\tat com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.processClass(Main.java:704)","position":{},"original":"\tat com.android.dx.command.dexer.Main.processClass(Main.java:704)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.processFileBytes(Main.java:673)","position":{},"original":"\tat com.android.dx.command.dexer.Main.processFileBytes(Main.java:673)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.access$300(Main.java:83)","position":{},"original":"\tat com.android.dx.command.dexer.Main.access$300(Main.java:83)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602)","position":{},"original":"\tat com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)","position":{},"original":"\tat com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)","position":{},"original":"\tat com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)","position":{},"original":"\tat com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.processOne(Main.java:632)","position":{},"original":"\tat com.android.dx.command.dexer.Main.processOne(Main.java:632)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.processAllFiles(Main.java:510)","position":{},"original":"\tat com.android.dx.command.dexer.Main.processAllFiles(Main.java:510)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.runMonoDex(Main.java:280)","position":{},"original":"\tat com.android.dx.command.dexer.Main.runMonoDex(Main.java:280)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.run(Main.java:246)","position":{},"original":"\tat com.android.dx.command.dexer.Main.run(Main.java:246)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.main(Main.java:215)","position":{},"original":"\tat com.android.dx.command.dexer.Main.main(Main.java:215)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.Main.main(Main.java:106)","position":{},"original":"\tat com.android.dx.command.Main.main(Main.java:106)"}
AGPBI: {"kind":"SIMPLE","text":"...while parsing reactor/communications/ClientEndpointTCP.class","position":{},"original":"...while parsing reactor/communications/ClientEndpointTCP.class"}
AGPBI: {"kind":"SIMPLE","text":"1 error; aborting","position":{},"original":"1 error; aborting"}


推荐答案

原来不支持Java 8通过Android SDK(或类似的东西)。在我的桌面上安装Oracle JDK 7,并重新编译我的 .jar 完全解决了这个问题。

Turns out Java 8 is not yet supported by the Android SDK (Or something along those lines). Installing Oracle JDK 7 on my desktop, and recompiling my .jar fixed the issue completely.

最重要的部分是产生错误的第二行:坏类文件魔术(cafebabe)或版本(0034.0000)。对于52,0x34是十六进制,这意味着二进制文件的目标是支持Java 8的JRE,但Android Studio的系统要求表明需要JDK 7

The most important part was in the second line of the error produced: "bad class file magic (cafebabe) or version (0034.0000)". 0x34 is hex for 52, which means that the binaries are targeted for JREs that support Java 8, but Android Studio's system requirements state that JDK 7 is required

切换到的步骤Oracle JDK 7:

Steps to switch to Oracle JDK 7:


  1. 从Oracle网站下载JDK .tar

  2. 解压缩内容至 / opt /

  3. sudo update-alternatives --install / bin / java java / opt / jdk * version * / jre / bin / java 1023

  4. sudo update-alternatives --install / bin / javac javac / opt / jdk * version * / bin / javac 1023

  5. sudo update-alternatives --install / bin / jar jar / opt / jdk * version * / bin / jar 1023

  1. Download JDK .tar from Oracle's site
  2. Untar contents to /opt/
  3. sudo update-alternatives --install /bin/java java /opt/jdk*version*/jre/bin/java 1023
  4. sudo update-alternatives --install /bin/javac javac /opt/jdk*version*/bin/javac 1023
  5. sudo update-alternatives --install /bin/jar jar /opt/jdk*version*/bin/jar 1023

https://askubuntu.com/questions/56104/how-can-i-install-sun-oracles-proprietary-java- jdk-6-7-8-or-jre

这篇关于添加jar文件后的Android Studio preDexDebug的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆