Я уже знаю, что этот вопрос уже задавали очень часто, и на него есть ответы, но ни один из ответов, которые я нашел, не решил мою проблему.
Это ошибка:
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
Ошибка есть bad class file magic (cafebabe) or version (0034.0000)
.
Я без проблем собрал и запустил приложение много раз в один и тот же день, но теперь это сообщение терпит неудачу каждый раз.
Project SDK есть, Android API 19 Platform
а уровень проекта есть 1.7
.
CompileSDK есть, 19
а buildToolsVersion есть '20.0.0'
.
Варианты компиляции:
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
и у dependencies
меня есть:
compile files('libs/bananaquery.jar')
Библиотека построена с помощью SDK Android API 19 Platform
на уровне проекта 1.7
.
Мой .jar
файл находится внутри libs/
папки.
Я использую IntelliJ IDEA 14 Preview, может быть причина? В IntellIJ IDEA 13 он застревает в "синхронизации Gradle"
компилировать файлы может быть бесполезно, так как у меня compile fileTree(dir: 'libs', include: ['*.jar'])
тоже
источник
Ответы:
моя
JAVA_HOME
переменная изменилась на Java 1.8, и я получил это сообщение об ошибке при компиляции чистого java-модуля в зависимости от моего проекта Android.build.gradle модуля java
Решение №1: Быстро грязное
Я исправил это, установив
JAVA_HOME
обратно на 1,7:Решение №2: изменить версию компилятора:
вернитесь к 1.7 для этого конкретного модуля в его build.gradle
источник
compileOptions.with { sourceCompatibility=JavaVersion.VERSION_1_7 targetCompatibility=JavaVersion.VERSION_1_7 }
Хорошо, моя проблема.
В разделе Project SDK, когда вы добавляете,
Android SDK
вы должны предоставить,Java SDK
и все мои Android SDK используют Java 8 в качестве SDK, поэтому он создает файлы классов с неправильной версией, даже если уровень Project равен1.7
(я не знаю почему, я предположил что все было выбрано уровнем Проекта).Теперь я поменял SDK (
java version "1.x.0"
часть.)и, кажется, компилируется нормально.
Причина, по которой это работало до сегодняшнего дня, заключалась в том, что мой SDK был,
1.8
а неAndroid API x
источник
Если люди находят ответ @Marco Acierno немного неясным, решение состоит в том, чтобы убедиться, что вы строите с помощью Java 7, а не более поздней версии.
Для Android Studio измените
File -> Project Structure -> SDK Location -> JDK Location
наjdk1.7.x
. Для командной строки обеспечьтеjava -version
выходыjava version "1.7.x"
.источник
Установка JAVA_HOME обратно на 1.7 сработала для меня.
источник
измените все версии вашего модуля java на java 1.7 в каждом файле build.grade.
в плагине, который является библиотекой и приложением
и в Java
источник
Эта проблема возникает, когда вы используете
.jar
файл, в котором не используются какие-либо функции Java 6 или выше, но который был создан с использованием Java 6 или выше.Если вы создали этот
.jar
файл, вам не нужно ничего менять вGradle
илиProGuard
илиCompiler Version
. Решение очень простое, просто создайте этот.jar
файл снова, но с использованием Java 5 или ниже .Подробнее .
источник
У меня была аналогичная проблема, я решил ее обновив свой прогард. получить версию proguard с помощью этой команды
получите последний файл progaurd.jar отсюда ( http://proguard.sourceforge.net )
замените существующий android-sdks / tools / proguard / lib / proguard.jar новым файлом .jar.
Надеюсь, это поможет вам. Если вы используете java 8, вам следует перейти на proguard 5.x, потому что proguard 4.x не поддерживает java 8.
источник
была аналогичная проблема, когда я пытался добавить самодельную библиотеку из netbeans в студию Android. установка исходной и целевой совместимости в студии Android и исходный / двоичный формат в netbeans (оба!) на java 1.7 решила проблему.
в студии Android:
Структура проекта -> Модули / Приложение -> Свойства -> Исходный код и цель до 1.7
в netbeans:
Файл -> Свойства проекта -> Источники -> Исходный / двоичный формат до 1,7
затем очистите и создайте свой проект netbeans и скопируйте .jar из «NBProj / dist» в «app / libs»
источник
поделитесь решением случая, если установлена только Java8, просто установите уровень компилятора Java на 1.7, а затем перестройте проект, должно быть все в порядке.
источник
Я получил ошибку при использовании сторонней библиотеки. В соответствии с вышеупомянутым вопросом, необходимо было заменить библиотеку в соответствии с приведенным выше сообщением трассировки стека:
с соответствующей версией.
В соответствии с вопросом,
bananaquery.jar
должна быть заменена на Java-совместимую версию.источник