我们似乎在Java环境中遇到了一个奇怪的错误.我们现在有两次相同的"不可能发生"的例外; 在一个案例中,问题在运行过程中的48分钟内发生了42,551次,然后自发地自行清除.
失败的代码由此行触发:
return String.format("%1d%XY%d", source, System.currentTimeMillis(), quoteID);
Run Code Online (Sandbox Code Playgroud)
在哪里int source = 0和long quoteID = 44386874(例如).
例外是:
java.util.UnknownFormatConversionException: Conversion = 'd'
at java.util.Formatter$FormatSpecifier.conversion(Formatter.java:2605)
at java.util.Formatter$FormatSpecifier.<init>(Formatter.java:2633)
at java.util.Formatter.parse(Formatter.java:2479)
at java.util.Formatter.format(Formatter.java:2413)
at java.util.Formatter.format(Formatter.java:2366)
at java.lang.String.format(String.java:2770)
Run Code Online (Sandbox Code Playgroud)
检查代码'd'不应该引发此异常.
我们提出的最佳解释是JIT编译器生成了错误的字节码,但在随后的重新JIT中,它编写了良好的代码.
任何人都有办法解决/诊断这样的问题吗?
罗杰.