Saya sudah tahu bahwa pertanyaan itu sudah sangat sering ditanyakan dan jawabannya, tetapi tidak ada jawaban yang saya temukan memperbaiki masalah saya.
Ini kesalahannya:
Error:Gradle: Execution failed for task ':ffcommunity:preDexDebug'.
com.android.ide.common.internal.LoggedErrorException: Failed to run command:
D:\Android SDK\sdk\build-tools\20.0.0\dx.bat --dex --output D:\Users\ReVo\Documents\IntelliJ IDEA\FFCommunity\ffcommunity\build\intermediates\pre-dexed\debug\bananaquery-2ee85432877a057e7414910b8127805535139d5d.jar D:\Users\ReVo\Documents\IntelliJ IDEA\FFCommunity\ffcommunity\libs\bananaquery.jar
Error Code:
1
Output:
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)
at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:472)
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.processClass(Main.java:665)
at com.android.dx.command.dexer.Main.processFileBytes(Main.java:634)
at com.android.dx.command.dexer.Main.access$600(Main.java:78)
at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:572)
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:596)
at com.android.dx.command.dexer.Main.processAllFiles(Main.java:498)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:264)
at com.android.dx.command.dexer.Main.run(Main.java:230)
at com.android.dx.command.dexer.Main.main(Main.java:199)
at com.android.dx.command.Main.main(Main.java:103)
...while parsing com/comuf/revonline/bananaquery/BananaInsert.class
1 error; aborting
Kesalahannya adalah bad class file magic (cafebabe) or version (0034.0000)
.
Saya membangun dan mengeksekusi aplikasi tanpa masalah berkali-kali di hari yang sama tetapi sekarang ini selalu gagal dengan pesan ini.
SDK proyek adalah Android API 19 Platform
dan tingkat proyek 1.7
.
CompileSDK adalah 19
dan buildToolsVersion adalah '20.0.0'
.
Opsi kompilasi:
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
dan dependencies
saya punya:
compile files('libs/bananaquery.jar')
Perpustakaan dibangun dengan SDK Android API 19 Platform
dengan tingkat proyek 1.7
.
.jar
File saya ada di dalam libs/
folder.
Saya menggunakan IntelliJ IDEA 14 Preview, mungkinkah itu alasannya? Dengan IntellIJ IDEA 13 ini tetap macet di "Gradle sync"
mengkompilasi file bisa jadi tidak berguna karena saya compile fileTree(dir: 'libs', include: ['*.jar'])
juga punya
sumber
Jawaban:
JAVA_HOME
variabel saya berubah menjadi Java 1.8 dan saya mendapat pesan kesalahan ini saat menyusun modul java murni sebagai ketergantungan proyek android saya.build.gradle dari modul java
Solusi # 1: Cepat kotor
Saya memperbaikinya dengan menyetel
JAVA_HOME
punggung saya ke 1,7:Solusi # 2: Ubah versi kompiler:
ubah kembali ke 1.7 untuk modul khusus ini di build.gradle-nya
sumber
compileOptions.with { sourceCompatibility=JavaVersion.VERSION_1_7 targetCompatibility=JavaVersion.VERSION_1_7 }
Ok, salahku.
Di bagian SDK Proyek, ketika Anda menambahkan,
Android SDK
Anda harus menyediakanJava SDK
dan semua SDK Android saya menggunakan Java 8 sebagai SDK sehingga membuat file kelas dengan versi yang salah meskipun tingkat Proyek adalah1.7
(saya tidak tahu mengapa, saya kira bahwa semuanya dipilih berdasarkan level Proyek).Sekarang saya mengubah SDK (
java version "1.x.0"
bagian.)dan tampaknya dapat dikompilasi dengan baik.
Alasan yang berhasil sebelum hari ini adalah karena SDK saya dulu
1.8
dan tidakAndroid API x
sumber
Jika orang merasa jawaban @Marco Acierno agak tidak jelas, solusinya adalah memastikan Anda membangun dengan Java 7 dan bukan versi yang lebih tinggi.
Untuk Android Studio, ubah
File -> Project Structure -> SDK Location -> JDK Location
kejdk1.7.x
. Untuk baris perintah, pastikanjava -version
keluaranjava version "1.7.x"
.sumber
Menyetel JAVA_HOME kembali ke 1.7 berhasil untuk saya.
sumber
ubah semua versi modul java Anda menjadi java 1.7 di setiap file build.grade.
dalam plugin yang merupakan library dan aplikasi
dan di java
sumber
Masalah ini terjadi saat Anda menggunakan
.jar
file yang tidak menggunakan fitur Java 6 atau lebih tinggi tetapi dibuat menggunakan Java 6 atau lebih tinggi.Jika Anda membuat
.jar
file itu maka Anda tidak perlu mengubah apa pun diGradle
atauProGuard
atauCompiler Version
. Solusinya sangat sederhana, cukup buat.jar
file itu lagi tetapi menggunakan Java 5 atau kurang .Lebih detail .
sumber
Saya memiliki masalah serupa, saya mengatasinya dengan meningkatkan proguard saya. dapatkan versi proguard Anda dengan perintah ini
dapatkan file progaurd.jar terbaru dari sini ( http://proguard.sourceforge.net )
ganti android-sdks / tools / proguard / lib / proguard.jar yang ada dengan file .jar yang baru.
Semoga ini bisa membantu Anda. Jika Anda menggunakan java 8 maka Anda harus mengupgrade ke proguard 5.x karena proguard 4.x tidak mendukung java 8.
sumber
memiliki masalah serupa ketika saya mencoba menambahkan perpustakaan buatan sendiri dari netbeans ke studio android. mengatur kompatibilitas sumber dan target di studio android dan format sumber / biner di netbeans (keduanya!) ke java 1.7 memecahkan masalah.
di studio android:
Struktur Proyek -> Modules / App -> Propreties -> Source- dan Target ke 1.7
di netbeans:
File -> Properti Proyek -> Sumber -> Sumber / Format Biner ke 1.7
kemudian bersihkan dan bangun proyek netbeans Anda dan salin .jar dari "NBProj / dist" ke "app / libs"
sumber
berbagi solusi dari kasus ini jika hanya Java8 yang diinstal, cukup setel level compiler Java ke 1.7 dan kemudian membangun kembali proyek tersebut harus OK.
sumber
Saya mendapat kesalahan saat menggunakan perpustakaan pihak ketiga. Sesuai dengan pertanyaan yang disebutkan di atas, perpustakaan harus diganti sesuai dengan pesan pelacakan tumpukan di atas:
dengan versi yang sesuai.
Sesuai dengan pertanyaan,
bananaquery.jar
akan diganti dengan versi yang kompatibel dengan Java.sumber