Skip to content

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

@jae226

Description

@jae226

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions