Portál AbcLinuxu, 10. května 2025 04:46

Dotaz: java.util.Formatter: IllegalFormatConversionException

Fuky avatar 1.9.2010 10:04 Fuky | skóre: 52 | blog: 4u
java.util.Formatter: IllegalFormatConversionException
Přečteno: 242×
Odpovědět | Admin

Existuje nějaký nástroj, který by dokázal zobrazit varování pokud je zřejmé, že jsou špatně zadané parametry pro Formatter, viz níže? Přijde mi zbytečné nechávat v programu chyby, které jdou odhalit před jeho spuštěním.

$ vim IllegalFormatConversion.java
public class IllegalFormatConversion {
    public static void main(String[] args) {
        System.out.printf("%d\n", "string");
    }
}

$ javac -Xlint:all IllegalFormatConversion.java && java IllegalFormatConversion
Exception in thread "main" java.util.IllegalFormatConversionException: d != java.lang.String
	at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:3999)
	at java.util.Formatter$FormatSpecifier.printInteger(Formatter.java:2709)
	at java.util.Formatter$FormatSpecifier.print(Formatter.java:2661)
	at java.util.Formatter.format(Formatter.java:2433)
	at java.io.PrintStream.format(PrintStream.java:920)
	at java.io.PrintStream.printf(PrintStream.java:821)
	at IllegalFormatConversion.main(IllegalFormatConversion.java:3)
-- RÁMO: psí tábor , ETriatlon: Výuka plavání

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (Fuky (tazatel))
1.9.2010 12:36 XY
Rozbalit Rozbalit vše Re: java.util.Formatter: IllegalFormatConversionException
Odpovědět | | Sbalit | Link | Blokovat | Admin
Existuju tooly ako FindBugs alebo PMD, ktore analyzuju kod a hladaju podozrive miesta. Ale ci spoznaju aj taketo nieco, to neviem. Obidva sa ale daju rozsirovat o vlastne pravidla, takze ak to nespoznaju out-of-the-box, tak si take pravidlo mozete pridat.
Fuky avatar 1.9.2010 17:07 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: java.util.Formatter: IllegalFormatConversionException

Děkuji za tipy. FindBugs to umí:

$ findbugs -textui /path/to/class
H C FS: Argument of type String can't be handled by format specifier %d in IllegalFormatConversion.main(String[])  At IllegalFormatConversion.java:[line 3]
Warnings generated: 1
Řešení 1× (Fuky (tazatel))
1.9.2010 12:58 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
Rozbalit Rozbalit vše Re: java.util.Formatter: IllegalFormatConversionException
Odpovědět | | Sbalit | Link | Blokovat | Admin
IntelliJ IDEA mi u toho formátovacího řetězce zobrazí varování: Format string "%d\n" does not match the type of its arguments. Takže předpokládám, že jiné nástroje pro statickou analýzu by to mohly zvládnout taky :-)
Ještě na tom nejsem tak špatně, abych četl Viewegha.
Fuky avatar 1.9.2010 17:12 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: java.util.Formatter: IllegalFormatConversionException
Dík za tip, mrknul jsem na IntelliJ IDEA, umí toho celkem dost, zkoušel jsem i Eclipse, ale zatím jsem se vždy vrátil zpět ke GVimu a příkazové řádce. ;-)
1.9.2010 22:25 karl82 | skóre: 6
Rozbalit Rozbalit vše Re: java.util.Formatter: IllegalFormatConversionException
gVim je vyborny, ale na nektery veci jsou proste lepsi nastroje... Zvetsi se ti produktivita prace nekolikrat

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.