我正在使用从资源加载的自定义字体。这段代码在Eclipse中完美运行,但是在以jar运行时会出错。
try {
java.io.InputStream inputStream = getClass().getResourceAsStream("/fonts/xkcd.ttf");
iybfont = Font.createFont(Font.PLAIN, inputStream); //CRASHES ON THIS LINE
} catch (Exception e) {
e.printStackTrace();
System.out.println(e);
}
以jar运行时,会出现以下错误(从命令提示符窗口):
java.io.IOException: Problem reading font data.
at java.awt.Font.createFont0(Unknown Source)
at java.awt.Font.createFont(Unknown Source)
at vbday.Start.initialize(Start.java:83)
at vbday.Start.<init>(Start.java:45)
at vbday.Start.main(Start.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
第83行显示在上方的注释中
答案 0 :(得分:1)
问题在于文件名大小写。 Eclipse显然可以纠正扩展中的错误情况,但最终的jar不能。
将.getResourceAsStream("/fonts/xkcd.ttf");
更改为.getResourceAsStream("/fonts/xkcd.TTF");