web-dev-qa-db-fra.com

Obtenu "version de fichier de classe non prise en charge 52.0" après avoir inclus un module dans un projet

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')
23
Sébastien

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

}
38
Sébastien

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. 

3
Elliott Frisch

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.

2
Nagaraju Gajula