Major.minor versión 52.0 no compatible en mi aplicación

126

Estoy intentando compilar mi proyecto de Android y recibo este error

[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] ------------------------------------------------------------------------

He estado leyendo en otra publicación que intentar compilar con Java 8 podría causar ese error, pero no es mi caso, tengo la siguiente versión de 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 (no tengo instalado Java 8). Compilación: MAVEN

Puede alguien ayudarme con esto?

Rafael Reyes
fuente
2
Parece que podría estar usando bibliotecas de Java 8 JDK compilado con locales 7.
Taylor
¿Cómo puedo arreglar eso? @Taylor
Rafael Reyes
44
cambie a jdk 8, o use una versión anterior de la biblioteca que contienecom/android/dx/command/Main
Taylor
No se me permite cambiar a jdk 8, ¿cómo puede degradar la versión de la biblioteca que contiene com / android / dx / command / Main? @Taylor
Rafael Reyes
1
No puedo usar el chat desde donde estoy.
Taylor

Respuestas:

236

También enfrento este problema cuando hago un nuevo proyecto desde el estudio de Android.

He podido resolver esto degradando buildToolsVersion en la configuración de la aplicación gradle: cambie {module-name} /build.gradle line

buildToolsVersion "24.0.0 rc1"

a

buildToolsVersion "23.0.3"


@Edit:
en Android Studio 2.1 Vaya a Archivo-> Estructura del proyecto-> Aplicación -> Versión de la herramienta de compilación. Cámbielo a 23.0.3

Realice el método anterior, solo cuando esté utilizando la versión 7 de Java y, por alguna razón, no quiera actualizar a Java 8 todavía.

Espero que esto ayude

Rudy Kurniawan
fuente
@RafaelReyes No sé nada sobre la construcción de proyectos de Android con Maven. Pero dado que Android usa herramientas de compilación de todos modos, ¿no puede encontrar qué versión usó su versión de herramienta de compilación en la configuración de Maven?
Rudy Kurniawan
1
@RudyKurniawanHi, supongo que es <version> 4.1.1.4 </version>
Rafael Reyes el
2
La versión más nueva: buildToolsVersion "23.0.3"
XurajB
1
ayudó por la respuesta, pero ¿qué debemos hacer si necesitamos construir 24?
shridutt kothari
2
para eso, debes usar Java 8 para construir tu aplicación
Rudy Kurniawan
43

Gradle Scripts >> build.gradle (aplicación de módulo)

Cambie buildToolsVersion "24.0.0" a buildToolsVersion "23.0.3"

fuente: experiencia

Febrianto Nugroho
fuente
10
¿Por qué recomienda esta rebaja? ¿Qué hace?
J Fabian Meier
¿Por qué es preferible 23.0.3 ?
IgorGanapolsky
31

Inicialmente me había degradado buildToolsVersionde 24.0.0 rc3a 23.0.3, como se especifica en la respuesta de Rudy Kurniawan. Entonces me di cuenta de que tengo jdk 7 especificado en la configuración de mi proyecto. Lo he cambiado a jdk 8 y ahora las herramientas de compilación 24.0.0 rc3funcionan.

ingrese la descripción de la imagen aquí

También es importante tener las opciones de compilación configuradas para java7:

android {
    ...
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}
Denis Kniazhev
fuente
Esto resolvió mi problema con AndroidStudio 2. Estaba recibiendo muchos errores extraños.
wmac
Con la versión más reciente de buildToolsVersion 25.0.1 , requiere Java 8.
IgorGanapolsky
14

Instalé Android Studio junto a Xamarin Visual Studio (ya estaba instalado). Después de la instalación (excluido SDK, porque ya estaban instalados), inicié Android Studio y descargué, instalé y agregué SDK faltantes (después de dar la ruta a la ubicación del SDK). Como resultado recibí el mensaje de error en la compilación

java.lang.UnsupportedClassVersionError: com / android / dx / command / Main: Unsupported major.minor versión 52.0

Como solución, instalé jdk-8u101-windows-i586.exesin JRE (porque ya estaba instalado). Antes de probar la versión x64, pero desapareció ... Luego debe cambiar la ubicación del Kit de desarrollo de Java .

Cambiar ubicación de JDK

Esto se hace en Visual Studio haciendo clic en Herramientas> Opciones> Xamarin> Configuración de Android. Aquí puede navegar a la ubicación correcta. En mi caso lo fue C:\Program Files (x86)\Java\jdk1.8.0_101.

Finalmente, limpia tu proyecto y crea una nueva compilación :-)

pruebas
fuente
"O establezca la propiedad AndroidSdkBuildToolsVersion MSBuild en una versión anterior. Por ejemplo, si también tiene instalada la versión 23.0.3, puede agregar la siguiente línea dentro del elemento <PropertyGroup> superior en el archivo .csproj del proyecto Android: <AndroidSdkBuildToolsVersion> 23.0 .3 </AndroidSdkBuildToolsVersion> " ref: releases.xamarin.com/…
samis
8

El problema especificado:

Excepción en el hilo "main" java.lang.UnsupportedClassVersionError: com / android / dx / command / Main: Unsupported major.minor versión 52.

se produce cuando se declara dentro del build.gradle, buildToolsVersion 24y no tenemos instalado Java 8 que se requiere para esta versión . Para resolver este problema, tenemos que cambiar buildToolsVersionde 24 a un máximo de 23:

ingrese la descripción de la imagen aquí

Java 8 debe ser necesario en el futuro Android Studio, por lo que debemos comenzar a usar Java 8.

Jorgesys
fuente
6

Tuve el mismo problema con mi compilación IntelliJ Maven. Mi "solución" fue ir a las herramientas de compilación y eliminar la carpeta de herramientas de compilación 24.0.0. Lo encontré en el {android-sdk-location}/build-tools/directorio. Esto no es una solución a largo plazo, pero al menos debería hacer que tu proyecto vuelva a construirse. La actualización a Java 8, como muchos han sugerido, será mejor a largo plazo.

sotrh
fuente
Esta es la primera opción que realmente podría usar, porque no pude encontrar la configuración mencionada en otras respuestas en la interfaz de usuario de Android Studio. Lo eliminé y luego creé un nuevo proyecto y funcionó.
Mitch
5

También me enfrenté a este problema al hacer un nuevo proyecto en eclipse.

  1. Abra su directorio de instalación de eclipse
  2. Abra el archivo eclipse.ini
  3. Modificar

    Dosgi.requiredJavaVersion=1.6 

    a

    Dosgi.requiredJavaVersion=1.7

Espero que esto ayude

usuario6661437
fuente
Agrego la línea "Dosgi.requiredJavaVersion = 1.7" a /Applications/eclipse/configuration/config.ini Funciona perfectamente en mi macOS Sierra
Bob Cheng el
¿Qué te hace pensar que la pregunta de OP está asociada con Eclipse?
IgorGanapolsky
5

Lo que nadie dice aquí es que con Build Tools 24.0.0, se requiere Java 8 y la mayoría de las personas tienen 1.6 o 1.7.

Entonces sí, establecer la herramienta de compilación en 23.xx 'resolvería' el problema, pero la causa raíz es la versión de Java en su sistema.

A largo plazo, es posible que desee actualizar su entorno de desarrollo para utilizar JDK8 para utilizar las nuevas mejoras de idioma y el compilador de jack.

Jay Sidri
fuente
5

52 es el código para JDK 8. Puede ver eso aquí: http://javarevisited.blogspot.com/2015/05/fixing-unsupported-majorminor-version.html . Entonces, Gradle espera que tengas JDK 8 como la versión predeterminada de Java en tu máquina. Las versiones más recientes de Gradle para Android no funcionarán con Java 7.

La solución es simple: haga de Java 8 la versión jdk predeterminada en su máquina.

IgorGanapolsky
fuente
¿Cómo se hace eso?
GuidoG
@GuidoG Debe seguir las instrucciones de instalación para su sistema operativo específico. Solo búscalo en Google y obtendrás las instrucciones detalladas. El objetivo es poder ejecutar java -version desde la línea de comandos y verlo como 1.8.
IgorGanapolsky
4

Estoy en Android Studio 2.0 y enfrento el mismo problema. La solución proporcionada por Rudy Kurniawan solucionó este problema. El archivo afectado puede ser localizado por:

"Proyecto" -> "Android" -> "Gradle Scripts" -> "build.gradle (Módulo: aplicación)"

El panel " Proyecto " está predeterminado a la izquierda. Para encontrarlo, inspeccione el nombre de las pestañas laterales, haga clic en él, luego use el cuadro desplegable superior para llegar a " Android ". Expanda el árbol en el panel para encontrar el archivo de destino. Haga doble clic para editar.

coarist
fuente
Estoy en Intellij IDEA con Maven Build.
Rafael Reyes
4

Perdón por la respuesta tardía. Espero que ayude a alguien más

Este problema está relacionado con su SDK, no con su JDK. Puede consultar la información de su versión en

Ayuda> Acerca de> Mostrar detalles

Obtendrás algo como

Xamarin. Versión de Android: 6.0.2.1 (Starter Edition) Android SDK: X: \ Android \ android-sdk

Versiones de Android compatibles:

4.0.3 (API nivel 15)

4.4 (nivel de API 19)

6.0 (API nivel 23)

Versión de herramientas del SDK: 24.4.1

Versión de herramientas de plataforma SDK: 23.0.1

Versión de herramientas de compilación del SDK: 24 rc2

SDK de Java: X: \ Archivos de programa (x86) \ Java \ jdk1.7.0_71

versión de Java "1.7.0_71"

Java (TM) SE Runtime Environment (compilación 1.7.0_71-b14)

VM de cliente Java HotSpot (TM) (compilación 24.71-b01, modo mixto, uso compartido)

Si está utilizando herramientas de vista previa para construir, obtendrá errores similares en todas partes.

¿Qué hacer ahora?

ir

Herramientas -> Administrador de SDK

  1. Seleccione todos los elementos en los canales de vista previa, incluso Android SDK build toolscon rev 24rc2o 24rc4(más reciente)

  2. Haga clic en Delete 'n' packages

Cómo desactivar el canal de vista previa

  1. En el administrador de SDK, seleccione

    Herramientas> opciones

  2. Desmarcar Enable preview tools

Y qué

Volver a su código Limpiar todo y reconstruir (en casos excepcionales, debe seleccionar las herramientas de compilación de la página de configuración del proyecto)

Habel Philip
fuente
Esto me funcionó bien. pero antes de eso instalé jdk 8 y cambié el directorio como se describe en otra respuesta aquí,
Abdur Rahim
¿Cómo es Xamarin relevante para la pregunta de OP?
IgorGanapolsky
"O establezca la propiedad AndroidSdkBuildToolsVersion MSBuild en una versión anterior. Por ejemplo, si también tiene instalada la versión 23.0.3, puede agregar la siguiente línea dentro del elemento <PropertyGroup> superior en el archivo .csproj del proyecto Android: <AndroidSdkBuildToolsVersion> 23.0 .3 </AndroidSdkBuildToolsVersion> "
samis
2

Gracias a todos por la solución.

Podría resolver mi mismo problema usando la solución a continuación.

En mi proyecto, agregué jar que fueron creados en Java8. Y mi proyecto se refería a JRE 7. Cuando cambié el proyecto JRE a 8. Mi problema se resolvió.

Pasos: en eclipse, haga clic con el botón derecho en el nombre del proyecto en el explorador de proyectos> ruta de compilación> Bibliotecas> haga clic en la versión jre> haga clic en editar> JRE instalado> agregar> máquina virtual standerd> seleccione la ruta de clic de inicio de JRE (la ruta debe ser localePath \ java \ jdk1 .8.0_25 \ jre)> proporcionar nombre> guardar> seleccionar el mismo JRE para el proyecto> finalizar> ok Actualizar / construir proyecto una vez> intente ejecutar su archivo java. deberia de funcionar.

haithem
fuente
2

¿Recibe este mensaje de error en el servidor de compilación travis?

Arreglé mi travis build con buildToolsVersion "24.0.2" usando esto

# 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
fuente
eso es correcto. cuando traté de arreglar mi travis build encontré esta pregunta que no me ayudó. después de descubrir cómo solucionarlo, agregué esto a otras personas con el mismo problema
k3b
2

En mi caso, el jdk predeterminado era 1.7, luego lo cambié a 1.8 navegando a la carpeta exacta donde se encuentra el jdk actualizado.

Hedego
fuente
esto funcionó para mí! necesita tener la versión 1.8 jdk instalada y dirigida
hewstone
1

Tuve el mismo problema e intenté cambiar la versión, a veces es para la versión de Android Studio en Proyecto> Gradle Scripts> build.gradle (Módulo: aplicación), puede cambiar la versión. Por ejemplo:

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

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

De esta pregunta.

Puede intentar cambiar su nivel de compilador de nuevo a 1.7 en el IDE que está utilizando.

  • Si está en Eclipse, vaya a Windows ---> Prefences, luego seleccione Java y amplíelo, luego seleccione Compilador y cambie el nivel de cumplimiento a 1.7.
  • Si está en Android Studio, puede agregar esto a su 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
        }
    }

Si esto no ayuda, intente verificar la respuesta de otros en el enlace mencionado anteriormente y díganos qué lo ayudó.

cristianorbs
fuente
1
Estoy usando Maven e IntelliJ.
Rafael Reyes
En este caso, podría cambiar la fuente y el destino a 1.7 dentro de la configuración en el complemento del compilador maven
cristianorbs
1

Sus herramientas de compilación de Android no están instaladas correctamente. Intente instalar alguna otra versión de las herramientas de compilación y proporcione esa versión en el archivo gradle. o puedes ir a este directorio

C: \ Users \\ AppData \ Local \ Android \ sdk \ build-tools

y ver qué herramientas de compilación están instaladas. Intente cambiar la versión de la herramienta de compilación en el archivo gradle y compile la aplicación para ver si está funcionando.

Tenía las versiones 22.0.1,23.0.02 y 24.0.0 de las herramientas de compilación y solo funcionaba la versión anterior 22.0.1.

fuente: lo intenté yo mismo y funcionó para mí.

Swathin
fuente
1

Este problema se debe al hecho de que su versión de la herramienta de compilación y JDK no funcionarán juntos. Estaba usando JDK versión 7 con la herramienta de compilación 24.0.1. Por supuesto, reducir la versión de la herramienta de compilación puede solucionar el problema, pero no es una solución real, ya que actualizar sus herramientas de compilación en el futuro lo volverá a romper.

Debe asegurarse de que la versión de la herramienta de compilación y JDK funcionen juntos. Actualicé mi herramienta de compilación a la última (24.0.1) e instalé jdk8. Asegúrese de configurar su JAVA_HOME en la última versión y luego intente una compilación limpia.

GodOnScooter
fuente
1

Tengo el mismo problema fuera de Android Studio, al intentar compilar para Cordova usando el sdk desde la línea de comandos (cordova build android).

La solución proporcionada por Rudy también funciona en este caso. Simplemente no degrada la versión de Build Tools de Android Studio, pero lo hace usando la interfaz de usuario de Android SDK Manager.

Andrea Gherardi
fuente
0

Acabo de encontrar este problema.

Volviendo de las versiones de "Vista previa del canal" de las herramientas SDK y las herramientas de compilación a la última versión estable lo arregló.

Mike Playle
fuente
0

Cambiando com.android.tools.build:gradle:2.2.0-beta1a com.android.tools.build:gradle:2.1.2arreglarlo para mí.

Mi versión de Android Studio es 2.1.2, quizás por eso

ericn
fuente
0

La solución más simple es que debe actualizar su JDK a la última versión. Porque Cordova solo admite el último JDK.

1 . En primer lugar, debe actualizar su SDK de Android. Luego,

2. Si no puede actualizar a través de su terminal, acceda a su centro de software de Linux destro y busque el último (cuál desea instalar) e instale ese.

Luego, vuelva a ejecutar Cordova build .

Resolverá el problema.

En mi caso funcionó.

PyDevSRS
fuente
0

Debe ir al directorio de instalación del SDK y asegurarse de que el subdirectorio / build-tools coincida con el buildToolsVersionarchivo build.gradle de su aplicación: ingrese la descripción de la imagen aquí

IgorGanapolsky
fuente
0

Compruebe que dispone de la última versión del SDK instalado en cualquiera C:\Program Files\JavaoC:\Program Files (x86)\Java

Luego vaya a VS2015 y siga las herramientas de ruta - opciones - Xamarin - Configuración de Android y en la sección Ubicación de JDK seleccione cambiar y vaya a buscar la versión que tiene x64 o x32.

genomma
fuente
0

Estoy en Córdoba, esto es lo que he hecho:

- cambie el nombre de su proyecto de Android, para que haya espacio para uno nuevo
- actualice JAVA Development Kit a 1.8 (el último en el momento de escribir esto)
- ejecutecordova platform add android

Debería funcionar sin problemas ahora. El hash de su aplicación cambiará, por lo que si lo está utilizando fe para iniciar sesión en facbeook, deberá actualizarlo

mate.gwozdz
fuente
0

Había tenido este problema durante demasiado tiempo (SO, etc., no había ayudado) y solo lo resolví (usando SDK 25).

-El archivo local.properties proguard.dir var no se aplicaba con ant; Había especificado 5.3.2, pero una llamada de línea de comando y una compilación de exportación firmada (eclipse) estaba usando 4.7, desde el directorio sdk (solo 5+ admite java 8)

Mi solución fue reemplazar los frascos proguard (directorio android-sdk / tools / proguard / libs) en el sdk con una versión actual (5+) de proguard.

rndStr
fuente
0

El error de versión principal menor no admitida puede deberse a una versión JDK no compatible. Actualice JDK, vaya a Configuración del módulo y cambie la ruta JDK a la nueva. En la mayoría de los casos, corrige el error.

Rachit Murarka
fuente
-1

Tenía dos versiones de Java JDK instaladas. Una vez que señalé la versión correcta de java jdk en Archivo-> Estructura del proyecto -> Ubicación del SDK a la última versión que tenía en la variable de entorno JAVA_HOME, el problema desapareció.

Thambu Zk
fuente
Esto no necesariamente resuelve el problema de las compilaciones de línea de comandos con Gradle.
IgorGanapolsky