Tiene "versión de archivo de clase no compatible 52.0" después de incluir un módulo en un proyecto
Después de crear un proyecto vacío dentro de Android Studio e incluir un módulo java puro, que compila y funciona perfectamente por sí solo, obtengo el siguiente error en cada clase del módulo:
Error:PARSE ERROR: Error:unsupported class file version 52.0
- SSL Handshake no se puede conectar a Google desde un cliente Android
- android: crear el oyente del tecleo programmatically con la clase anónima
- 'No se puede devolver la cabeza del árbol nulo o de la hoja' con CoreNLP en Android
- Linux Ubuntu Android SDK manager no está iniciando - android: java: no encontrado
- Aplicación de Android + Módulo de Java (Java 1.8)
He intentado ejecutar el proyecto utilizando el JDK incorporado y el que tengo en mi sistema – JDK 8 (1.8.0_91), el resultado es el mismo.
Tenga en cuenta que no incluyo el módulo como .jar
, es el código fuente que importa con la siguiente instrucción:
include ':app', ':my-module' project(':my-module').projectDir = new File(settingsDir, '../my-module-java')
- ¿Cómo mostrar la página siguiente de los resultados de búsqueda personalizados de Google?
- ¿Qué es un apkLIB y cómo uso uno?
- Echoprint codegen para Java / Android
- Cómo establecer X-Api-Key en el encabezado de la solicitud HTTP obtener
- GetExternalFilesDir alternativa en android 2.1
- ¿Cómo mostrar el cajón de navegación en todas las actividades?
- Resumen de la tabla de referencia local de JNI (512 entradas)
- Excepción de tiempo de ejecución extra cuando se ejecuta una aplicación de Android en algunos dispositivos
Lo tengo, el error fue porque no especifique las opciones de compatibilidad en el propio módulo. Esto significa que si ha instalado y utilizando JDK 8 y su proyecto android utiliza Java 1.7 (que es por defecto en Android SDK 23 y siguientes) y tiene un módulo incluido sin ninguna especificación para utilizar Java 1.7, entonces ese módulo será compilado con JDK 8 utilizando la sintaxis de Java 1.8 y habrá un error porque no son compatibles y el compilador que utiliza Java 1.7 no puede analizar los archivos de clase que estaban apuntando a Java 1.8 y tienen la versión 52.
Build.gradle – este archivo de compilación es para nivel de módulo
apply plugin: 'java' buildscript { tasks.withType(JavaCompile) { sourceCompatibility = JavaVersion.VERSION_1_7 targetCompatibility = JavaVersion.VERSION_1_7 } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') // Your libraries here }
Sé, especifico la versión de destino 1_7
La Guía de Compatibilidad de Oracle para Java 8 dice (en parte)
La versión del archivo de clase para Java SE 8 es 52.0 según la Especificación de JVM. Los archivos de clase de la versión 52.0 producidos por un compilador Java SE 8 no se pueden utilizar en versiones anteriores de Java SE.
Meta Java 7 y recompile.
He enfrentado errores similares mientras construía el proyecto.
Error:PARSE ERROR Error:unsupported class file version 52.0
Me enfrenté a estos errores después de haber cambiado de Java 1.8
a Java 1.7
. Mi proyecto consta de varias bibliotecas, 1 módulo de aplicación, 3 módulos de biblioteca de Android y 2 módulos de biblioteca de Java. No build.gradle
nada en las bibliotecas de Android, pero añadí las siguientes líneas en las dependencias de los archivos build.gradle
de las bibliotecas Java.
sourceCompatibility = 1.7 targetCompatibility = 1.7
Resolvió el problema para mí. El error de análisis se debió principalmente a que las clases Java 1.8 no se podían analizar en clases Java 1.7.
Recibí este error por primera vez después de actualizar Android Studio desde 2.1 a 2.2.2, y me quedé perplejo porque mi sistema sólo tenía Java 1.7 instalado, o eso pensé. Resulta que Android 2.2.2 instala su propio Java 1.8 JRE (C: \ Archivos de programa \ Android \ Android Studio \ jre), por lo que la necesidad de especificar sourceCompatibility
y targetCompatibility
en build.gradle para las bibliotecas java puras como se explicó anteriormente.
apply plugin: 'java' dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') sourceCompatibility = 1.7 targetCompatibility = 1.7 }
- Anulación de registro de GCM causando que la aplicación se bloquee
- Filtrado de ruido de datos del acelerómetro