Gradle-Testaufgaben können aufgrund von java.lang.NoClassDefFoundError nicht ausgeführt werden: jdk/internal/reflect/GeneratedSerializationConstructorAccessor1
Lesezeit: 5 Minuten
Ich habe ein Android-Projekt, bei dem ich nicht mehr alle Test-Gradle-Aufgaben lokal ausführen kann (ich habe drei verschiedene Varianten in diesem Projekt). Ich habe diese Fehlermeldung 50 Mal, bevor die Aufgaben fehlschlagen. Ich habe kein Problem damit, diese Aufgaben remote mit Gitlab CI/CD auszuführen, und ich habe lokal ein anderes Projekt, bei dem ich dieses Problem auch nicht habe.
java.lang.NoClassDefFoundError: jdk/internal/reflect/GeneratedSerializationConstructorAccessor1
at jdk.internal.reflect.GeneratedSerializationConstructorAccessor1.newInstance(Unknown Source)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at java.base/java.io.ObjectStreamClass.newInstance(ObjectStreamClass.java:1092)
at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2150)
at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1668)
at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:482)
at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:440)
at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.deserializeWorker(SystemApplicationClassLoaderWorker.java:153)
at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:121)
at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
Ich habe genau das gleiche Problem. Haben Sie kürzlich zufällig ein Upgrade auf die neuesten Jetbrains-IDE-Versionen durchgeführt? AS 4.2.1, denke ich
– davy307
21. Juni 2021 um 16:24
@davy307 Ja, ich habe auch kürzlich Android Studio auf 4.2.1 aktualisiert, kann das Problem jedoch nicht datieren und bin mir daher nicht sicher, ob es damit zusammenhängt
– Alan
22. Juni 2021 um 12:42 Uhr
Update: Ich habe das Problem auf AS 4.2.1. Dann habe ich es mit der letzten Version von IC 2021.1 versucht, am Anfang hatte Intellij Gradle-Probleme und wollte das Projekt nicht kompilieren. Nachdem ich den Git-Verlauf meines Projekts hin und her durchgegangen bin, wurde das Build-Problem mit IC irgendwie behoben (ohne eine Zeile zu ändern) und ich kann jetzt das Projekt erstellen und die Tests mit IC ausführen. Das Problem bleibt bei AS.
– Alan
22. Juni 2021 um 16:26
Richtig, nach einiger Untersuchung stellt sich heraus, dass AS 4.2.1 ein Problem hat, bei dem der Verweis auf das JDK verloren geht. Jetzt müssen Sie abhängig von Ihrem Projekt die spezifische JDK-Version von Oracle herunterladen (für unser Projekt habe ich JDK verwendet). 8 (oracle.com/uk/java/technologies/javase/…), da dies die maximal unterstützte Datei ist, und verweisen Sie AS dann im Menü „Projektstruktur“ auf diese als JAVA_HOME
Danke. Bei mir hat es nur funktioniert, als ich es eingefügt habe: testOptions { unitTests.all { jacoco {
– Arpit Ratan
13. Okt. 2021 um 9:55 Uhr
Diese Lösung funktionierte für mich, aber niemand anderes in meinem Team musste sie hinzufügen – alle konnten die Tests problemlos ausführen, und die Tests liefen auch in Jenkins einwandfrei. Daher möchte ich diese Änderung nicht in mein Repo übernehmen. Weiß jemand, warum nur ich diese Änderung vornehmen muss? Es muss etwas geben, das ich lokal ändern kann, sodass ich das nicht tun muss.
– elliptisch1
30. Dezember 2021 um 16:23 Uhr
@elliptic1 Ich habe genau das gleiche Problem. Haben Sie eine Lösung gefunden?
– immer
8. März 2022 um 14:47 Uhr
@elliptic1 Stellen Sie sicher, dass die Java-Version in Ihrem Pfad mit der Ihrer Kollegen übereinstimmt (das war mein Problem).
– Kevin Brotcke
31. März 2022 um 20:01 Uhr
Nikita Baronia
In einem solchen Fall müssen Sie, auch wenn Ihr JAVA_HOME in bash_profile festgelegt ist, dies auch in Android festlegen: Gehen Sie zu Datei -> Projektstruktur -> SDK-Speicherort und legen Sie den JDK-Speicherort fest.
Manchmal kann es sich um einen anderen Speicherort als bash_profile handeln.
Siehe Screenshot als Referenz
Das hat bei mir funktioniert! Ich habe mein JDK von 11 auf 8 geändert und kann die Tests jetzt lokal ausführen. Danke!
– Joaquin Iurchuk
22. März 2022 um 23:03 Uhr
Für alle, die wissen möchten, wie der Fix in Kotlin aussieht *.kts:
14524500cookie-checkGradle-Testaufgaben können aufgrund von java.lang.NoClassDefFoundError nicht ausgeführt werden: jdk/internal/reflect/GeneratedSerializationConstructorAccessor1yes
Ich habe genau das gleiche Problem. Haben Sie kürzlich zufällig ein Upgrade auf die neuesten Jetbrains-IDE-Versionen durchgeführt? AS 4.2.1, denke ich
– davy307
21. Juni 2021 um 16:24
@davy307 Ja, ich habe auch kürzlich Android Studio auf 4.2.1 aktualisiert, kann das Problem jedoch nicht datieren und bin mir daher nicht sicher, ob es damit zusammenhängt
– Alan
22. Juni 2021 um 12:42 Uhr
Update: Ich habe das Problem auf AS 4.2.1. Dann habe ich es mit der letzten Version von IC 2021.1 versucht, am Anfang hatte Intellij Gradle-Probleme und wollte das Projekt nicht kompilieren. Nachdem ich den Git-Verlauf meines Projekts hin und her durchgegangen bin, wurde das Build-Problem mit IC irgendwie behoben (ohne eine Zeile zu ändern) und ich kann jetzt das Projekt erstellen und die Tests mit IC ausführen. Das Problem bleibt bei AS.
– Alan
22. Juni 2021 um 16:26
Richtig, nach einiger Untersuchung stellt sich heraus, dass AS 4.2.1 ein Problem hat, bei dem der Verweis auf das JDK verloren geht. Jetzt müssen Sie abhängig von Ihrem Projekt die spezifische JDK-Version von Oracle herunterladen (für unser Projekt habe ich JDK verwendet). 8 (oracle.com/uk/java/technologies/javase/…), da dies die maximal unterstützte Datei ist, und verweisen Sie AS dann im Menü „Projektstruktur“ auf diese als JAVA_HOME
– davy307
23. Juni 2021 um 13:08 Uhr