【发布时间】:2018-07-02 01:28:26
【问题描述】:
我正在使用从资源加载的自定义字体。此代码在 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 行显示在上面的注释中
【问题讨论】:
-
@AndrewThompson 其余的大部分与手头的实际问题无关。下次我会记住布局管理器之类的东西,但它们目前与手头的问题无关
-
哦!哎呀,我没有意识到字体加载实际上是失败的,而 println 是什么生成了部分错误消息。明天我将使用堆栈跟踪更新错误代码!所以我想真正的问题是字体资源没有加载到 jar 中
-
@AndrewThompson 好吧,我对问题进行了重大修改,包括添加堆栈跟踪和删除不相关的代码。据我所知,文件路径是正确的。 (毕竟它会在 Eclipse 中加载)
-
呸,没关系。弄清楚了。扩展名应该是“.TTF”而不是“.ttf”。感谢您的指导,帮助我找出实际问题
标签: java fonts nullpointerexception embedded-resource ioexception