2015-02-22 8 views
5

Possiedo un framework tutto mio che utilizzo per attività in classe (classe di scuola, non classe Java) e l'ho inserito in un file .jar in modo che ogni volta che apporto modifiche al quadro, posso semplicemente trascinarlo e rilasciarlo in Android Studio. Tutto ha funzionato bene per gli ultimi 5 compiti di classe, e ora all'improvviso sto ricevendo un errore preDexDebug failed durante l'analisi del mio .jar dopo aver fatto clic su Esegui. Ho provato questo su un progetto vuoto. Il progetto ha un totale di 2 .jar s: Gson, e il mio barattolo. Si stampa preDexDebug failed subito dopo ho tirato il mio .jar ... Ho lottato con questo per due ore esasperanti, e non so cosa posso fare per risolvere questo a tutti ...Studio Android preDexDebug Dopo l'aggiunta di file jar

I ' Ho provato a ricostruire, pulire, controllare gradle.build per duplicati, replicare il progetto più volte, e anche compilare e copiare più volte lo .jar.

Ubuntu x64 con Oracle JDK a 64 bit 1.8.0_31. Utilizzando Java in bundle con l'uscita JDK

Studio Android:

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"} 
+0

l'errore fa in modo apparire come si può avere cambiato qualcosa nel "reattore/comunicazione/ClientEndpointTCP.class" per causare il problema. Potrebbe essere un buon momento per iniziare a utilizzare un sistema di controllo delle versioni per tenere traccia delle modifiche nel codice, in modo da poter facilmente eseguire il backup su una versione nota e determinare quale modifica esatta è responsabile. –

+0

Ho appena realizzato che questa è la prima volta che ho compilato tutto sul mio desktop. Ha sempre funzionato sul mio portatile, che ha OpenJDK 1.7, e c'è un'altra persona che ha avuto anche l'errore 'bad magic' qui. L'ho esaminato e sembra che Android SDK supporti ufficialmente solo Java 7, quindi l'errore ha senso ora. Ho intenzione di provare la compilazione sul mio portatile per il momento – Alex

risposta

4

Risulta Java 8 non è ancora supportato dal SDK di Android (o qualcosa del genere). L'installazione di Oracle JDK 7 sul desktop e la ricompilazione del mio .jar risolvono completamente il problema.

La parte più importante era nella seconda riga dell'errore prodotto: "bad class file magic (cafebabe) or version (0034.0000)". 0x34 è esadecimale per 52, il che significa che i binari sono mirati per JRE che supportano Java 8, ma i requisiti di sistema di Android Studio affermare che JDK 7 è richiesto

Procedura per passare a Oracle JDK 7:

  1. Scarica JDK .tar dal sito di Oracle
  2. contenuti untar per /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

+0

Puoi fornire un link su come passare a Java 7? – matto1990

+0

Ho aggiornato la mia risposta – Alex

Problemi correlati