Eu já sei que essa pergunta já foi feita com frequência e respostas, mas nenhuma das respostas que encontrei resolveu meu problema.
É o erro:
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
O erro é bad class file magic (cafebabe) or version (0034.0000)
.
Construí e executei o aplicativo sem problemas muitas vezes no mesmo dia, mas agora isso falha todas as vezes com esta mensagem.
O SDK do projeto é Android API 19 Platform
e o nível do projeto é 1.7
.
CompileSDK é 19
e buildToolsVersion é '20.0.0'
.
Opções de compilação:
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
e dependencies
eu tenho:
compile files('libs/bananaquery.jar')
A biblioteca é construída com SDK Android API 19 Platform
com nível de projeto 1.7
.
Meu .jar
arquivo está dentro da libs/
pasta.
Eu uso o IntelliJ IDEA 14 Preview, pode ser o motivo? Com o IntellIJ IDEA 13, ele permanece travado na "sincronização do Gradle"
compilar arquivos podem ser inúteis, pois eu compile fileTree(dir: 'libs', include: ['*.jar'])
também
fonte
Respostas:
minha
JAVA_HOME
variável mudou para Java 1.8 e recebi esta mensagem de erro ao compilar um módulo Java puro como uma dependência do meu projeto android.build.gradle do módulo java
Solução # 1: Rápido e sujo
Eu consertei colocando minhas
JAVA_HOME
costas em 1,7:Solução 2: alterar a versão do compilador:
mude de volta para 1.7 para este módulo específico em seu build.gradle
fonte
compileOptions.with { sourceCompatibility=JavaVersion.VERSION_1_7 targetCompatibility=JavaVersion.VERSION_1_7 }
Ok, meu mal.
Na seção SDK do projeto, ao adicionar um,
Android SDK
você deve fornecer oJava SDK
e todos os meus SDKs do Android usam Java 8 como SDK para criar os arquivos de classe com a versão errada, mesmo se o nível do projeto for1.7
(não sei por que, suponho que tudo foi escolhido por nível de projeto).Agora mudei o SDK (a
java version "1.x.0"
parte).e parece compilar bem.
O motivo que funcionou antes de hoje foi porque meu SDK era
1.8
e nãoAndroid API x
fonte
Caso as pessoas achem a resposta de @Marco Acierno um pouco confusa, a solução é garantir que você esteja construindo com Java 7 e não uma versão superior.
Para Android Studio, mude
File -> Project Structure -> SDK Location -> JDK Location
parajdk1.7.x
. Para a linha de comando, garantajava -version
saídasjava version "1.7.x"
.fonte
Definir JAVA_HOME de volta para 1.7 funcionou para mim.
fonte
mude toda a sua versão do módulo java para java 1.7 em cada arquivo build.grade.
no plugin que é a biblioteca e o aplicativo
e em java
fonte
Esse problema ocorre quando você usa um
.jar
arquivo que não está usando nenhum recurso do Java 6 ou superior, mas foi criado com o Java 6 ou superior.Se você criou esse
.jar
arquivo, não precisa alterar nada emGradle
ouProGuard
ouCompiler Version
. A solução é muito simples, basta construir esse.jar
arquivo novamente, mas usando Java 5 ou menos .Mais detalhes .
fonte
Eu tive um problema semelhante, resolvi-o atualizando meu proguard. obtenha sua versão do programa por este comando
obtenha o arquivo progaurd.jar mais recente aqui ( http://proguard.sourceforge.net )
substitua o android-sdks / tools / proguard / lib / proguard.jar existente pelo novo arquivo .jar.
Esperançosamente, isso deve ajudá-lo. Se você estiver usando java 8, deverá atualizar para o proguard 5.x porque o proguard 4.x não oferece suporte ao java 8.
fonte
Tive um problema semelhante quando tentei adicionar uma biblioteca criada pelo próprio netbeans ao android studio. definir a compatibilidade de origem e destino no android studio e o formato de origem / binário em netbeans (ambos!) para java 1.7 resolveu o problema.
no android studio:
Estrutura do Projeto -> Módulos / Aplicativo -> Propriedades -> Fonte- e Alvo para 1.7
no netbeans:
Arquivo -> Propriedades do projeto -> Fontes -> Formato fonte / binário para 1,7
em seguida, limpe e construa seu projekt netbeans e copie o .jar de "NBProj / dist" para "app / libs"
fonte
compartilhe a solução do caso se apenas o Java8 estiver instalado, basta definir o nível do compilador Java para 1.7 e, em seguida, reconstruir o projeto deve estar OK.
fonte
Recebi o erro ao usar uma biblioteca de terceiros. De acordo com a questão mencionada acima, foi necessário substituir a biblioteca de acordo com a mensagem de rastreamento de pilha acima:
com a versão apropriada.
Correspondente à pergunta,
bananaquery.jar
deve ser substituído pela versão compatível com Java.fonte