Major.minor versão 52.0 não suportada no meu aplicativo

126

Estou tentando compilar meu projeto Android e estou recebendo este erro

[INFO] Exception in thread "main" java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : Unsupported major.minor version 52.0
[INFO]  at java.lang.ClassLoader.defineClass1(Native Method)
[INFO]  at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
[INFO]  at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
[INFO]  at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
[INFO]  at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
[INFO]  at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
[INFO]  at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
[INFO]  at java.security.AccessController.doPrivileged(Native Method)
[INFO]  at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
[INFO]  at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
[INFO]  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
[INFO]  at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
[INFO]  at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------

Eu estive lendo em outro post que tentar compilar com o Java 8 pode causar esse erro, mas não o meu caso, eu tenho a seguinte versão do Java:

java version "1.7.0_79"
OpenJDK Runtime Environment (IcedTea 2.5.5) (7u79-2.5.5-0ubuntu0.14.04.2)
OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode)

SO: Linux Mint (não tenho o Java 8 instalado.) Compilação: MAVEN

Alguém pode me ajudar com isso?

Rafael Reyes
fonte
2
Parece que você pode estar usando java 8 compilado bibliotecas com jdk locais 7.
Taylor
como posso consertar isso? @Taylor
Rafael Reyes
4
mude para o jdk 8 ou use uma versão mais antiga da biblioteca que contémcom/android/dx/command/Main
Taylor
Não tenho permissão para mudar para o jdk 8, como fazer o downgrade da versão da biblioteca que contém com / android / dx / command / Main? @Taylor
Rafael Reyes
1
Não é possível usar o bate-papo de onde estou.
Taylor

Respostas:

236

Também enfrento esse problema ao fazer um novo projeto no android studio.

Consegui resolver isso desclassificando buildToolsVersion na configuração de classificação do aplicativo: change {module-name} / line.buildle line

buildToolsVersion "24.0.0 rc1"

para

buildToolsVersion "23.0.3"


@ Edit:
No Android Studio 2.1 Vá para Arquivo-> Estrutura do Projeto-> Aplicativo -> Versão da Ferramenta de Construção. Altere para 23.0.3

Faça o método acima, apenas quando você estiver usando o java versão 7 e, por algum motivo, ainda não desejar atualizar para o java 8.

Espero que isto ajude

Rudy Kurniawan
fonte
@RafaelReyes Não sei nada sobre a construção de projeto android com maven. Mas como o Android usa as ferramentas de construção de qualquer maneira, você não consegue encontrar qual versão sua versão da ferramenta de construção usou na configuração do maven?
Rudy Kurniawan 12/04
1
@RudyKurniawanHi, eu acho que é <version> 4.1.1.4 </ version>
Rafael Reyes
2
A versão mais recente: buildToolsVersion "23.0.3"
XurajB 26/04
1
ajudou muito obrigado pela resposta, mas o que devemos fazer se precisarmos criar 24?
shridutt kothari
2
para isso, você deve usar o java 8 para criar seu aplicativo
Rudy Kurniawan
43

Scripts da Gradle >> build.gradle (aplicativo Módulo)

Altere buildToolsVersion "24.0.0" para buildToolsVersion "23.0.3"

fonte: experiência

Febrianto Nugroho
fonte
10
Por que você recomenda esse downgrade? O que isso faz?
J Fabian Meier
Por que 23.0.3 é preferível?
IgorGanapolsky 23/11
31

Inicialmente, eu havia rebaixado buildToolsVersionde 24.0.0 rc3para 23.0.3, conforme especificado na resposta de Rudy Kurniawan. Então notei que tenho o jdk 7 especificado nas configurações do meu projeto. Eu mudei para jdk 8 e agora as ferramentas de construção 24.0.0 rc3funcionam.

insira a descrição da imagem aqui

Também é importante ter opções de compilação definidas para java7:

android {
    ...
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}
Denis Kniazhev
fonte
Isso resolveu meu problema com o AndroidStudio 2. Eu estava recebendo muitos erros estranhos.
Wc #
Com o mais novo buildToolsVersion 25.0.1 , requer Java 8.
IgorGanapolsky
14

Instalei o Android Studio ao lado do Xamarin Visual Studio (já estava instalado). Após a instalação (excluído o SDK, porque eles já estavam instalados), iniciei o Android Studio e ele baixou, instalou e adicionou os SDKs ausentes (depois de fornecer o caminho para o local do SDK). Como resultado, recebi a mensagem de erro na compilação

java.lang.UnsupportedClassVersionError: com / android / dx / command / Principal: Major.minor não suportado, versão 52.0

Como solução, instalei jdk-8u101-windows-i586.exesem o JRE (porque já estava instalado). Antes de experimentar a versão x64, mas ela desapareceu ... Então você precisa alterar o local do Java Development Kit .

Alterar localização do JDK

Isso é feito no Visual Studio, clicando em Ferramentas> Opções> Xamarin> Configurações do Android. Aqui você pode navegar para o local correto. No meu caso, foi C:\Program Files (x86)\Java\jdk1.8.0_101.

Por fim, limpe seu projeto e faça uma nova compilação :-)

teste
fonte
"Ou defina a propriedade AndroidSdkBuildToolsVersion MSBuild para uma versão anterior. Por exemplo, se você também tiver a versão 23.0.3 instalada, poderá adicionar a seguinte linha no elemento <PropertyGroup> superior no arquivo .csproj do projeto Android: <AndroidSdkBuildToolsVersion> 23.0 .3 </AndroidSdkBuildToolsVersion> " ref: releases.xamarin.com/…
samis
8

O problema especificado:

Exceção no encadeamento "main" java.lang.UnsupportedClassVersionError: com / android / dx / command / Main: major.minor não suportado, versão 52.

é causado quando é declarada dentro do build.gradle, buildToolsVersion 24e nós não dispomos Java 8 instalado que é necessário para esta versão . Para resolver esse problema, precisamos mudar buildToolsVersionde 24 para o máximo 23:

insira a descrição da imagem aqui

O Java 8 deve ser necessário no futuro para Android Studio, portanto, precisamos começar a usar o Java 8.

Jorgesys
fonte
6

Eu tive o mesmo problema com minha compilação IntelliJ Maven. Minha "solução" foi acessar as ferramentas de compilação e remover a pasta 24.0.0 das ferramentas de compilação. Encontrei-o no {android-sdk-location}/build-tools/diretório Essa não é uma correção de longo prazo, mas isso deve pelo menos fazer com que seu projeto seja construído novamente. A atualização para o Java 8, como muitos sugeriram, será melhor a longo prazo.

sotrh
fonte
Esta é a primeira opção que eu realmente poderia usar, porque não consegui encontrar as configurações mencionadas em outras respostas na interface do usuário do Android Studio. Excluí-o e, em seguida, criei um novo projeto e funcionou.
Mitch
5

Eu também enfrentei esse problema ao fazer um novo projeto em eclipse.

  1. Abra o diretório de instalação do eclipse
  2. Abra o arquivo eclipse.ini
  3. Modificar

    Dosgi.requiredJavaVersion=1.6 

    para

    Dosgi.requiredJavaVersion=1.7

Espero que isto ajude

user6661437
fonte
Anexo a linha "Dosgi.requiredJavaVersion = 1.7" a /Applications/eclipse/configuration/config.ini Funciona perfeitamente no meu macOS Sierra
Bob Cheng
O que faz você pensar que a pergunta do OP está associada ao Eclipse?
IgorGanapolsky
5

O que ninguém está dizendo aqui é que, com o Build Tools 24.0.0, o Java 8 é necessário e a maioria das pessoas tem 1.6 ou 1.7.

Então, sim, definir a ferramenta de construção como 23.xx 'resolveria' o problema, mas a causa raiz é a versão Java no seu sistema.

A longo prazo, convém atualizar seu ambiente de desenvolvimento para usar o JDK8 para usar os novos aprimoramentos de idioma e o compilador de jack.

Jay Sidri
fonte
5

52 é o código para JDK 8. Você pode ver que aqui: http://javarevisited.blogspot.com/2015/05/fixing-unsupported-majorminor-version.html . Portanto, Gradle espera que você tenha o JDK 8 como a versão Java padrão em sua máquina. As versões mais recentes do Gradle para Android não funcionam com o Java 7.

A solução é simples: torne o Java 8 a versão jdk padrão em sua máquina.

IgorGanapolsky
fonte
Como é que alguém faz isso ?
GuidoG
@GuidoG Você precisa seguir as instruções de instalação do seu sistema operacional específico. Basta pesquisar no Google e você obterá instruções detalhadas. O objetivo é ser capaz de executar java -version a partir da linha de comando e vê-lo como 1.8.
IgorGanapolsky
4

Estou no Android Studio 2.0 e estou enfrentando o mesmo problema. A solução fornecida por Rudy Kurniawan resolveu esse problema. O arquivo afetado pode ser localizado por:

"Projeto" -> "Android" -> "Scripts Gradle" -> "build.gradle (Módulo: app)"

O painel " Projeto " é o padrão à esquerda. Para encontrá-lo, inspecione o nome das guias laterais, clique nele e use a caixa suspensa superior para acessar o " Android ". Expanda a árvore no painel para encontrar o arquivo de destino. Clique duas vezes nele para editar.

coarista
fonte
Estou no Intellij IDEA com o Maven Build.
Rafael Reyes
4

Desculpe pela resposta tardia. Espero que ajude outra pessoa

Esse problema está relacionado ao seu SDK, não ao seu JDK. Você pode verificar as informações da sua versão em

Ajuda> Sobre> Mostrar detalhes

Você receberá algo como

Xamarin.Android Versão: 6.0.2.1 (Starter Edition) SDK para Android: X: \ Android \ android-sdk

Versões suportadas do Android:

4.0.3 (nível 15 da API)

4.4 (nível 19 da API)

6.0 (nível 23 da API)

Versão do SDK Tools: 24.4.1

SDK Platform Tools Versão: 23.0.1

Versão das ferramentas de compilação do SDK: 24 rc2

Java SDK: X: \ Arquivos de Programas (x86) \ Java \ jdk1.7.0_71

versão java "1.7.0_71"

Java (TM) SE Runtime Environment (compilação 1.7.0_71-b14)

VM cliente Java HotSpot (TM) (build 24.71-b01, modo misto, compartilhamento)

Se você estiver usando ferramentas de visualização para construção, obterá erros semelhantes por todo o lado.

O que fazer agora?

vamos para

Ferramentas -> Gerenciador de SDK

  1. Selecione todos os itens nos canais de visualização, incluindo Android SDK build toolsrev 24rc2ou 24rc4(mais recente)

  2. Clique em Delete 'n' packages

Como desativar o canal de visualização

  1. No gerenciador do SDK, selecione

    Ferramentas> opções

  2. Desmarque Enable preview tools

E o que

Voltar ao seu código Limpar tudo e reconstruir (Em casos raros, é necessário selecionar as ferramentas de construção na página de configurações do projeto)

Habel Philip
fonte
Isso funcionou para mim bem. mas antes que eu instalei o JDK 8 e mudou o diretório, conforme descrito em outra resposta aqui,
Abdur Rahim
Como o Xamarin é relevante para a pergunta do OP?
IgorGanapolsky
"Ou defina a propriedade AndroidSdkBuildToolsVersion MSBuild para uma versão anterior. Por exemplo, se você também tiver a versão 23.0.3 instalada, poderá adicionar a seguinte linha no elemento <PropertyGroup> superior no arquivo .csproj do projeto Android: <AndroidSdkBuildToolsVersion> 23.0 .3 </AndroidSdkBuildToolsVersion> "
samis
2

Obrigado a todos pela solução.

Eu poderia resolver o meu mesmo problema usando a solução abaixo.

No meu projeto, adicionei jar que foram criados no Java8. E meu projeto estava se referindo ao JRE 7. Quando mudei o projeto JRE para 8. Meu problema foi resolvido.

Etapas: No eclipse, clique com o botão direito do mouse no nome do projeto no explorador de projetos> caminho da construção> Bibliotecas> clique na versão jre> clique em editar> JRE instalado> adicione> VM standerd> selecione o caminho de clique inicial do JRE (o caminho deve ser localePath \ java \ jdk1 .8.0_25 \ jre)> forneça o nome> salve> selecione o mesmo JRE para o projeto> termine> ok Atualize / construa o projeto uma vez> tente executar seu arquivo java. deve funcionar.

haithem
fonte
2

Recebeu esta mensagem de erro no servidor travis build?

Corrigi meu travis build com buildToolsVersion "24.0.2" usando este

# travis build 
language: android

jdk:
  - oraclejdk8

android:
  components:
    - tools
    - build-tools-24.0.2
    - android-23

    - add-on
    - extra

script:
  - jdk_switcher use oraclejdk8
  - ./gradlew assemble
k3b
fonte
está correto. Quando tentei consertar meu travis build, encontrei esta pergunta que não me ajudou. Depois que eu descobri como corrigir i adicionou isto para os outros com o mesmo problema
k3b
2

No meu caso, o jdk padrão era 1,7; então, mudei para 1,8, navegando até a pasta exata em que o jdk atualizado é encontrado.

Hedego
fonte
isso funcionou para mim! necessidade de ter a versão 1.8 do JDK instalado e direcionados
hewstone
1

Eu tive o mesmo problema e tentei alterar a versão, às vezes é para a versão do Android Studio em Projeto> Scripts Gradle> build.gradle (Módulo: aplicativo), você pode alterar a versão. Por exemplo:

android {
    compileSdkVersion **23**
    buildToolsVersion **"23.0.3"**

    defaultConfig {
        applicationId "com.example.android.myapplication"
        minSdkVersion **19**
        targetSdkVersion **23**
        versionCode **1**
        versionName **"1.0"**
    }
Gladys Sanchez
fonte
1

A partir disso pergunta.

Você pode tentar alterar o nível do compilador de volta para 1.7 no IDE que está usando.

  • Se você estiver no Eclipse, acesse Windows ---> Preferences, selecione Java e expanda-o, selecione Compiler e altere o nível de conformidade para 1.7.
  • Se você estiver no Android Studio, poderá adicioná-lo à sua build.gradle

    android {
        compileSdkVersion 19
        buildToolsVersion "19.0.0"
    
        defaultConfig {
            minSdkVersion 7
            targetSdkVersion 19
        }
    
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_7
            targetCompatibility JavaVersion.VERSION_1_7
        }
    }

Se isso não ajudar, tente verificar a resposta de outras pessoas no link mencionado acima e informe-nos o que o ajudou.

cristianorbs
fonte
1
Estou usando Maven e IntelliJ.
Rafael Reyes
Neste caso, você poderia mudar origem e de destino para 1,7 configuração interna em maven compilador plug-in
cristianorbs
1

Suas ferramentas de criação do Android não estão instaladas corretamente. Tente instalar outra versão das ferramentas de construção e forneça essa versão no arquivo gradle. ou você pode ir para este diretório

C: \ Usuários \\ AppData \ Local \ Android \ sdk \ build-tools

e veja quais ferramentas de compilação estão instaladas. Tente alterar a versão da ferramenta de construção no arquivo gradle e compile o aplicativo para verificar se está funcionando.

eu tinha as versões 22.0.1, 23.0.02 e 24.0.0 das ferramentas de construção e apenas a versão antiga 22.0.1 funcionava.

fonte: eu tentei eu mesmo e funcionou para mim.

Swathin
fonte
1

Esse problema decorre do fato de sua versão da ferramenta de construção e o JDK não funcionarem juntos. Eu estava usando o JDK versão 7 com a ferramenta de construção 24.0.1. É claro que abaixar a versão da ferramenta de construção pode corrigir o problema, mas não é uma correção real, pois a atualização de suas ferramentas de construção no futuro a interromperá novamente.

Você deve garantir que a versão da ferramenta de construção e o JDK funcionem juntos. Atualizei minha ferramenta de construção para a mais recente (24.0.1) e instalei o jdk8. Certifique-se de definir seu JAVA_HOME como o mais recente e tente a construção limpa.

GodOnScooter
fonte
1

Obtive o mesmo problema fora do Android Studio, ao tentar criar para o Cordova usando o sdk na linha de comando (cordova build android).

A solução fornecida por Rudy também funciona nesse caso. Você apenas não faz o downgrade da versão do Build Tools do Android Studio, mas faz isso usando a interface do usuário do android sdk manager.

Andrea Gherardi
fonte
0

Acabei de encontrar esse problema.

A reversão das versões "Preview Channel" das ferramentas do SDK e as ferramentas de construção para a versão estável mais recente o corrigiram.

Mike Playle
fonte
0

Mudando com.android.tools.build:gradle:2.2.0-beta1paracom.android.tools.build:gradle:2.1.2 corrigi-lo para mim.

Minha versão do Android Studio é 2.1.2, talvez por isso

ericn
fonte
0

A solução mais simples é a atualização do JDK para a versão mais recente. Porque o Cordova suporta apenas o JDK mais recente.

1 .Primeiro de tudo você precisa atualizar seu SDK do Android. Então,

2. Se você não conseguir atualizar através do seu terminal, acesse o Centro de Software de do Linux e destrua e pesquise o mais recente (qual você deseja instalar) e instale esse.

Em seguida, execute novamente a construção do Cordova .

Isso resolverá o problema.

No meu caso, funcionou.

PyDevSRS
fonte
0

Você precisa acessar o diretório de instalação do SDK e verificar se o subdiretório / build-tools corresponde ao buildToolsVersionarquivo build.gradle do seu aplicativo: insira a descrição da imagem aqui

IgorGanapolsky
fonte
0

Verifique se você tem a versão mais recente do SDK instalada em um C:\Program Files\JavaouC:\Program Files (x86)\Java

Em seguida, vá para o VS2015 e siga as ferramentas de caminho - opções - Xamarin - configurações do Android e, na seção Localização do JDK, selecione change e vá procurar a versão que possui x64 ou x32.

genomma
fonte
0

Estou em cordova, eis o que fiz:

- renomeie seu projeto Android, para que haja espaço para um novo
- atualize o JAVA Development Kit para 1.8 (o mais recente na hora de escrever isso)
- executecordova platform add android

Deve funcionar sem problemas agora. O hash do seu aplicativo será alterado, portanto, se você o estiver usando para o login no facbeook, será necessário atualizá-lo

mate.gwozdz
fonte
0

Eu tive esse problema por muito tempo (SO, etc, não ajudou) e apenas o resolvi (usando o sdk 25).

-O arquivo local.properties proguard.dir var não estava sendo aplicado com ant; Eu especifiquei 5.3.2, mas uma chamada de linha de comando e uma compilação de exportação assinada (eclipse) estavam usando 4.7, do sdk dir (apenas 5+ suporta java 8)

Minha solução foi substituir os frascos proguard (diretório android-sdk / tools / proguard / libs) no sdk por uma versão atual (5+) do proguard.

rndStr
fonte
0

O erro da versão principal principal ou secundária não suportada pode ser devido à versão do JDK não suportada. Atualize o JDK, acesse Configurações do módulo e altere o caminho do JDK para o novo. Na maioria dos casos, ele corrige o erro.

Rachit Murarka
fonte
-1

Eu tinha duas versões do java jdk instaladas. Depois que apontei para a versão correta do java jdk em Arquivo-> Estrutura do projeto -> Local do SDK para a versão mais recente que eu tinha na variável de ambiente JAVA_HOME, o problema foi resolvido.

Thambu Zk
fonte
Isso não necessariamente resolve o problema de compilações de linha de comando com Gradle.
IgorGanapolsky