运行jar文件时出现以下错误。 它在JDK 1.6中运行,但在JRE 1.8中引发错误。 jar文件在eclipse中运行良好,但是当我导出它时,出现以下错误。
Exception in thread "main" java.lang.reflect.InvocationTargetException
Caused by: java.util.FormatFlagsConversionMismatchException: Conversion = s, Flags = #
at java.lang.String.format(Unknown Source)
at GenerateTTUMFile.padRight(GenerateTTUMFile.java:145)
at GenerateTTUMFile.generate_TTUMFile(GenerateTTUMFile.java:119)
at GenerateFilesOutwardCredit.main(GenerateFilesOutwardCredit.java:43)
我正在使用下面提到的功能。
public static String padRight(String s, int n) {
return String.format("%1$#" + n + "s", new Object[] { s });
}
答案 0 :(得分:1)
#标志可以应用于%o,%x,%e和%f格式说明符,但会为%s
引发异常如果给出了
#
标志,并且参数不是Formattable
, 那么将抛出FormatFlagsConversionMismatchException
。
摘自java.util.Formatter的文档:
The format specifiers for general, character, and numeric types have the following syntax:
%[argument_index$][flags][width][.precision]conversion
所以%1$#(n)s
意味着对于标志值,您有#
和s
(字符串)的转换。
由于java.lang.String
未实现Formattable接口,因此引发了异常。
答案 1 :(得分:0)
public static String padRight(String s, int n) {
return String.format("%-" + n + 's', s);
}
public static String padLeft(String s, int n) {
return String.format("%" + n + 's', s);
}
演示
System.out.println("0123456789|");
System.out.print(padRight("abc", 10));
System.out.println('|');
System.out.print(padLeft("abc", 10));
System.out.println('|');
输出
0123456789|
abc |
abc|
中的详细信息