diffplug / diffplug/spotless

ktlint broken in 8.4.0 — FeatureClassLoader missing Kotlin stdlib

Offen
#2,894 0 Kommentare 2 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
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

Beitragsleitfaden öffnen

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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.