在jar中资源失败时加载字体

时间:2018-07-01 01:01:23

标签: java fonts nullpointerexception embedded-resource ioexception

我正在使用从资源加载的自定义字体。这段代码在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行显示在上方的注释中

1 个答案:

答案 0 :(得分:1)

问题在于文件名大小写。 Eclipse显然可以纠正扩展中的错误情况,但最终的jar不能。

.getResourceAsStream("/fonts/xkcd.ttf");更改为.getResourceAsStream("/fonts/xkcd.TTF");