spotless icon indicating copy to clipboard operation
spotless copied to clipboard

Unable to configure ktfmt with gradle, getting `java.lang.NoSuchMethodError`

Open jae226 opened this issue 5 months ago • 0 comments

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

jae226 avatar May 19 '25 20:05 jae226