Après avoir créé un projet vide dans Android Studio et inclus un module Java pur, qui compile et fonctionne parfaitement de manière autonome, l'erreur suivante apparaît sur chaque classe de ce module:
Error:PARSE ERROR: Error:unsupported class file version 52.0
J'ai essayé d'exécuter le projet à l'aide du JDK intégré et de celui que j'ai sur mon système - JDK 8 (1.8.0_91), le résultat est identique.
Notez ceci, que je n'inclus pas le module en tant que bibliothèque .jar
, c'est le code source qui est importé avec l'instruction suivante:
include ':app', ':my-module'
project(':my-module').projectDir = new File(settingsDir, '../my-module-Java')
Compris, l'erreur est due au fait que je n'ai pas spécifié d'options de compatibilité dans le module lui-même. Cela signifie que si vous avez installé et utilisé JDK 8 et que votre projet Android utilise Java 1.7 (par défaut dans Android SDK 23 et versions ultérieures) et si un module est inclus sans spécification pour utiliser Java 1.7, ce module sera compilé avec JDK 8 utilisant la syntaxe Java 1.8 et il y aura une erreur car ils ne sont pas compatibles et le compilateur qui utilise Java 1.7 ne peut pas analyser les fichiers de classe qui ciblaient Java 1.8 et ont la version 52.
build.gradle - ce fichier de construction est destiné au niveau du module
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
}
Je sais, je spécifie la version cible 1_7
Le Guide de compatibilité Oracle pour Java 8 dit (en partie),
La version du fichier de classe pour Java SE 8 est 52.0, conformément à la spécification JVM. Les fichiers de classe de la version 52.0 produits par un compilateur Java SE 8 ne peuvent pas être utilisés dans les versions précédentes de Java SE.
Ciblez Java 7 et recompilez.
J'ai fait face à des erreurs similaires lors de la construction du projet.
Error:PARSE ERROR
Error:unsupported class file version 52.0
J'ai fait face à ces erreurs après être passé de Java 1.8
à Java 1.7
. Mon projet comprend plusieurs bibliothèques, un module d'application, trois modules de bibliothèque Android et deux modules de bibliothèque Java. Je n'ai rien changé dans les bibliothèques Android, mais j'ai ajouté les lignes suivantes dans les dépendances des fichiers build.gradle
des bibliothèques Java.
sourceCompatibility = 1.7
targetCompatibility = 1.7
Cela a résolu le problème pour moi. L’erreur d’analyse tenait principalement au fait que les classes Java 1.8 n’ont pas pu être analysées en classes Java 1.7.