ktlint broken in 8.4.0 — FeatureClassLoader missing Kotlin stdlib
- Vorherrschende Sprache
- Java
- Sterne
- 5.6k
- Forks
- 559
- Ø Merge
- 1 T. 14 Std.
- Gemergte PRs (30 T.)
- 43
Beschreibung
## Bug
After upgrading from 8.3.0 to 8.4.0, `spotlessKotlinCheck` fails for all Kotlin files. ktlint cannot initialize because Spotless' `FeatureClassLoader` fails to load a core Kotlin stdlib class.
Root cause from the lint output:
```
Caused by: java.lang.ClassNotFoundException: kotlin.collections.ArraysKt___ArraysJvmKt
at com.diffplug.spotless.FeatureClassLoader.findClass(FeatureClassLoader.java:79)
...
at com.diffplug.spotless.glue.ktlint.compat.KtLintCompat1Dot0Dot0Adapter.(KtLintCompat1Dot0Dot0Adapter.java:68)
```
This happens both with `ktlint("1.8.0")` and `ktlint()` (default). Reverting to 8.3.0 fixes it.
## Environment
- Spotless: 8.4.0 (8.3.0 works)
- Kotlin: 2.3.20
- Gradle: 9.4.1
- JDK: 21
## Notes
The 8.4.0 changelog shows no ktlint changes. The predeclared dependencies fix might have affected how ktlint's classpath is assembled in `FeatureClassLoader`.
Beitragsleitfaden
Rechercherichtung
Reproduzieren Sie den Fehler mit Spotless 8.4.0, Kotlin 2.3.20 und Gradle 9.4.1 unter Verwendung beider ktlint-Konfigurationen. Beginnen Sie bei FeatureClassLoader.java:79 und KtLintCompat1Dot0Dot0Adapter.java:68 und untersuchen Sie anschließend, wie die Änderung predeclared-dependencies den ktlint-Klassenpfad zusammenstellt. Die Aufgabe ist erledigt, wenn spotlessKotlinCheck für Kotlin-Dateien erfolgreich durchläuft, ohne auf 8.3.0 zurückzugehen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- java, kotlin
- Bereich
- build-system
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Ruhig
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 55/100