spotless
spotless copied to clipboard
Unable to configure ktfmt with gradle, getting `java.lang.NoSuchMethodError`
Versions:
- spotless: 6.25.0
- ktfmt: 0.54
- gradle: 8.13
Following the documentation (https://github.com/diffplug/spotless/tree/main/plugin-gradle#ktfmt) and trying to configure ktfmt, but getting a java.lang.NoSuchMethodError
plugins {
id("org.jetbrains.kotlin.jvm")
id("com.diffplug.spotless")
}
spotless {
kotlin {
ktfmt("0.54").kotlinlangStyle().configure {
it.setMaxWidth(120)
}
}
}
output of ./gradlew spotlessApply
> Task :application:spotlessKotlin FAILED
Step 'ktfmt' found problem in '<path/to/file>':
'com.facebook.ktfmt.format.FormattingOptions$Style com.facebook.ktfmt.format.FormattingOptions.getStyle()'
java.lang.NoSuchMethodError: 'com.facebook.ktfmt.format.FormattingOptions$Style com.facebook.ktfmt.format.FormattingOptions.getStyle()'
at com.diffplug.spotless.glue.ktfmt.KtfmtFormatterFunc.createFormattingOptions(KtfmtFormatterFunc.java:78)
at com.diffplug.spotless.glue.ktfmt.KtfmtFormatterFunc.apply(KtfmtFormatterFunc.java:54)
at com.diffplug.spotless.FormatterFunc.apply(FormatterFunc.java:32)
at com.diffplug.spotless.FormatterStepImpl$Standard.format(FormatterStepImpl.java:82)
at com.diffplug.spotless.FormatterStep$Strict.format(FormatterStep.java:103)
at com.diffplug.spotless.Formatter.compute(Formatter.java:246)
at com.diffplug.spotless.PaddedCell.calculateDirtyState(PaddedCell.java:203)
at com.diffplug.spotless.PaddedCell.calculateDirtyState(PaddedCell.java:190)
at com.diffplug.gradle.spotless.SpotlessTaskImpl.processInputFile(SpotlessTaskImpl.java:105)
at com.diffplug.gradle.spotless.SpotlessTaskImpl.performAction(SpotlessTaskImpl.java:89)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:125)
at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:45)
ℹ️ this works without the .configure { } block