Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

google-java-format 1.37.0: NoSuchMethodError on JavaFormatterOptions$Style.valueOf (Style is now a record)

Aperta Adatta ai principianti
#3,126 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@Goooler ci sta già lavorando.

Dal 3/10/2026.

  • #1472 di @Goooler — aperta

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
78/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
java
Ambito
build-system

Direzione di ricerca

Inizia da GoogleJavaFormatFormatterFunc, dove viene risolto lo stile google-java-format, e confronta la reflection dell'adapter con l'API JavaFormatterOptions.Style di google-java-format 1.37.0. Riproduci il problema con la configurazione Maven indicata ed esegui mvn spotless:check; il lavoro è completato quando la versione 1.37.0 termina senza InvocationTargetException e le opzioni di stile esistenti continuano a funzionare.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Overriding the google-java-format version to 1.37.0 makes spotless:check fail with InvocationTargetException. Spotless then reports it as google-java-format(java.lang.reflect.InvocationTargetException) and gives no cause.

Environment

  • spotless-maven-plugin 3.10.3 (spotless-lib 4.10.3)
  • google-java-format 1.37.0 (works with 1.36.1)
  • JDK 21 locally, and the same failure on the CI runner

Config

<googleJavaFormat>
  <version>1.37.0</version>
  <reflowLongStrings>true</reflowLongStrings>
  <formatJavadoc>false</formatJavadoc>
</googleJavaFormat>

Cause
Running Maven with -Xlog:exceptions=info showed the wrapped error:

java.lang.NoSuchMethodError: 'JavaFormatterOptions$Style JavaFormatterOptions$Style.valueOf(java.lang.String)'

GoogleJavaFormatFormatterFunc calls JavaFormatterOptions.Style.valueOf(String). In 1.36.1, Style is an enum. In 1.37.0 it is a record (extends java.lang.Record, with a builder() and toBuilder()), and valueOf no longer exists. This looks related to the new --style=google|aosp flag. Style.GOOGLE and Style.AOSP still exist as static fields.

Ruled out

  • The javac --add-exports flags: the 1.37.0 formatter works with them.
  • Guava version: it works with 32.1.3, 33.2.1 and 33.6.0.
  • Missing APIs: Builder.style, formatJavadoc, Formatter(JavaFormatterOptions), RemoveUnusedImports, ImportOrderer.reorderImports(String, Style) and StringWrapper.wrap are all present in 1.37.0.

Repro
Set <version>1.37.0</version> on the googleJavaFormat step, then run mvn spotless:check.

The adapter will need to map the style name to the new Style type, for example with Style.GOOGLE and Style.AOSP, instead of calling valueOf.

Downstream, this is blocking a Renovate bump: bytestreams-io/codec-core#164.

Lingua principale
Java
Stelle
5.7k
Fork
563
Merge medio
1g 18h
PR unite (30g)
53

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di diffplug/spotless

Tutte le issue di diffplug/spotless

Issue simili

Altre issue su Java

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.