58
votes

java.lang.NoClassDefFoundError: impossible d'initialiser la classe org.codehaus.groovy.vmplugin.v7.Java7

Je reçois cette exception java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7 and java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.reflection.ReflectionCache ) lorsque je lance l'application Spring Boot

J'utilise les outils ci-dessous

Version STS 3.9.10
Ouvrez JDK 14 64 bits
Botte à ressort 2.2.5

Cela fonctionnait bien avec oracle jdk mais il ne fonctionnait pas avec openjdk. Je n'utilise aucune bibliothèque groovy. Il s'agit d'un projet de démarrage à ressort basé sur maven.


0 commentaires

14 Réponses :


2
votes

utilisez-vous une bibliothèque tierce qui apporte des dépendances org.codehaus.groovy ? Si oui, vous pouvez essayer de remplacer vous-même les dépendances groovy requises par les versions les plus récentes.

Dans mon cas, c'était l' org.liquibase: liquibase-groovy-dsl , donc j'ai fait ceci:

    <dependency>
        <groupId>org.liquibase</groupId>
        <artifactId>liquibase-groovy-dsl</artifactId>
        <version>2.1.1</version>
        <exclusions>
            <exclusion>
                <groupId>org.codehaus.groovy</groupId>
                <artifactId>groovy</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.codehaus.groovy</groupId>
                <artifactId>groovy-sql</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>org.codehaus.groovy</groupId>
        <artifactId>groovy</artifactId>
        <version>3.0.3</version>
    </dependency>

    <dependency>
        <groupId>org.codehaus.groovy</groupId>
        <artifactId>groovy-sql</artifactId>
        <version>3.0.3</version>
    </dependency>


0 commentaires

77
votes

Comment exécutez-vous l'application? C'est probablement parce que vous utilisez Gradle comme système de construction et JDK14 et la version Gradle est ancienne. Référence: https://github.com/gradle/gradle/issues/10248

Si vous utilisez Gradle Wrapper, reportez-vous à $PROJECT_ROOT/gradle/wrapper/gradle-wrapper.properties . La propriété distributionUrl doit être: distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-bin.zip

S'il s'agit d'une version plus ancienne, modifiez-la, exécutez ./gradlew clean build et réessayez.


3 commentaires

Merci beaucoup, j'ai essayé beaucoup de choses en essayant de faire fonctionner React Native sur ma machine. Cela a fait l'affaire!


Pour suivre cela, j'utilise maven et brew m'a récemment mis à niveau vers OpenJDK 14, j'ai donc commencé à recevoir cette erreur. À partir du lien de cette réponse vers le problème de gradle, j'ai trouvé ce problème génial : issues.apache.org/jira/browse/GROOVY-9211 qui a depuis été corrigé dans Groovy 2.5.10 - alors assurez-vous de mettre à niveau votre version groovy vers cela un ou plus récent. Résolu le problème pour moi!


Merci beaucoup monsieur cela a parfaitement fonctionné!



3
votes

Vérifiez que votre projet fonctionne avec Java 14 même s'il est préparé pour Java 8.

Mon IntelliJ Idea donnait la même erreur en essayant d'exécuter une tâche Gradle qui fonctionnait parfaitement en ligne de commande avec JDK 8. Le JDK par défaut du projet ItelliJ Idea était 14 cependant.


0 commentaires

3
votes

Je résous ce problème lors de l'intégration de Facebook 7.19.2 et Google play Games 0.10.09 .

Dans mon cas, JDK et SDK utilisant (et d'autres dans Edit/Preferences/External -> Tools-Android ) les chemins par défaut Unity:

JDK

C:/Program Files/Unity/Hub/Editor/2019.2.12f1/Editor/Data/PlaybackEngines/AndroidPlayer\SDK

SDK

C:/ProgramFiles/Unity/Hub/Editor/2019.2.12f1/Editor/Data/PlaybackEngines/AndroidPlayer/Tools\OpenJDK\Windows

Dans les variables d'environnement (propriétés système / avancées) ajouté ensuite:

Rechercher (ou cliquez sur une nouvelle variable sous Variables utilisateur)

  • JAVA_HOME et ajoutez le chemin JDK racine.

  • JAVA_BIN et ajoutez le chemin JDK / bin

  • JAVA_LIB et ajoutez le chemin JDK / lib

Ajoutez également ces chemins dans les variables système à la variable "Chemin".

N'utilisez pas le SDK de Unity par défaut et le JDK de non Unity par défaut

Redémarrez ensuite Unity (et un meilleur PC).

Puis dans Editor Unity - Assets/Play -> Service -> Resolve/Android -> Resolver/Force -> Resolve

Tout fonctionne bien.


0 commentaires

5
votes

J'ai eu le même problème sur un projet Maven & SpringBoot, pas de Gradle.

La dépendance à org.codehaus.groovy est probablement transitive via spring-cloud-contract-verifier. Exécutez mvn dependency:tree pour afficher toute l'arborescence de dépendances.

Je l'ai réparé en mettant à niveau la version spring-cloud-contract-maven-plugin vers 2.2.3-RELEASE


0 commentaires

3
votes

Si vous utilisez Android Studio 4.0 ou une version ultérieure et que vous rencontrez des erreurs comme ci-dessous

C:\Program Files\Android\Android Studio\jre

Ou

Cela dit que quelque chose ne va pas avec JDK, puis suivez les étapes ci-dessous pour résoudre l'erreur.

Étape 1 : supprimez d'abord les dossiers .gradle et .idea du répertoire du projet et redémarrez Android Studio. Assurez-vous qu'il a disparu de la corbeille.

Étape 2 : Accédez à la structure du projet

Structure du projet

Étape 3: Sélectionnez Emplacement du SDK dans le panneau de gauche de la fenêtre Structure du projet.

Étape 4: Accédez à l' emplacement JDK et cliquez sur la flèche vers le bas, puis sélectionnez le jre au lieu de jdk

    Cause: invalid type code: 17
    Cause: invalid type code: fe
    Cause: invalid type code: 13
java.lang.NoClassDefFoundError: Could not initialize class

Emplacement JDK

Et cela résoudra les erreurs. Reconstruire le projet

Remarque: jre est livré avec l'installation d'Android Studio 4 pas sûr de l'ancienne version.

Cette solution fonctionne pour moi.


0 commentaires

-3
votes

Passez au JDK 11, cela devrait fonctionner.


0 commentaires

1
votes

Dans mon cas, la combinaison était IntelliJ 2020.2, Kotlin 1.3.72, Maven 3.6.1 et SpringBoot 2.2.1. Aucun Gradle utilisé du tout dans le projet.

D'une manière ou d'une autre, IntelliJ était passé à utiliser OpenJDK14 - lors du retour à OpenJDK11, tout a recommencé à fonctionner.


0 commentaires

23
votes

Dans le fichier android/gradle/wrapper/gradle-wrapper.properties , assurez-vous que distributionUrl est la suivante:

distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-bin.zip

Remarque: si vous avez installé jdk 14


0 commentaires

2
votes

dans mon cas, la version JRE utilisée dans la configuration d' exécution était différente de la version JDK cible dans le pom.xml

SpringBoot_Run_Config


0 commentaires

0
votes

J'ai résolu ce problème en sélectionnant le chemin JRE installé dans window => preferences => java => JRE installé => supprimer l'existant et sélectionner dans le répertoire local.

Assurez-vous que la variable java_home est définie dans la variable d'environnement


0 commentaires

8
votes

Je l'ai résolu en modifiant simplement gradle-wrapper.properties dans le dossier gradle et non en .gradle:

de:

distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-all.zip

à:

distributionUrl=https\://services.gradle.org/distributions/gradle-6.2-all.zip

reconstruire et c'est ok.


0 commentaires

0
votes

Si vous recherchez une solution similaire à @godsim shared, mais pour le plugin gradle liquabase, modifiez votre section de configuration dans build.gradle pour exclure la dépendance groovy de liquabase:

dependencies {
    ...
    liquibaseRuntime('org.liquibase:liquibase-core:3.8.1')
    liquibaseRuntime('org.codehaus.groovy:groovy-all:3.0.3')
    liquibaseRuntime 'org.postgresql:postgresql'
    liquibaseRuntime('org.liquibase:liquibase-groovy-dsl:2.1.2')
    liquibaseRuntime('org.liquibase.ext:liquibase-hibernate5:3.10.2')
    liquibaseRuntime('org.springframework.boot:spring-boot-starter-data-jpa')
    liquibaseRuntime sourceSets.main.output
    ...
}

puis ajoutez manuellement groovy dans la section des dépendances:

configurations {
    ...
    liquibaseRuntime.exclude group: "org.codehaus.groovy"
}


0 commentaires

0
votes

Ce problème n'est résolu pour moi que lorsque j'ai mis à jour compileSdkVersion et targetSdkVersion à 30 avec minSdkVersion 19


0 commentaires