我正在尝试用 Java 编写一个游戏,在开始屏幕上我使用了我下载的自定义字体。当我从 Eclipse 运行程序时,屏幕看起来像这样(就像它应该的那样):
但是,当我从编译的 jar 运行程序时,屏幕如下所示:
这是我加载字体的代码:
title = new JLabel("philip k. dick"); // font requires all lowercase
try {
Font f = Font.createFont(Font.TRUETYPE_FONT, new File(Util.getFile("all used up.ttf")));
title.setFont(new Font(f.getName(), f.getStyle(), 150));
} catch (Exception e) {
e.printStackTrace();
Font oldFont = title.getFont();
title.setFont(new Font(oldFont.getName(), oldFont.getStyle(), 100));
}
该方法Util.getFile
只是将“resources/”添加到给定的开头String
。
从命令行运行 jar 时没有给出错误。我知道程序可以访问字体资源,因为当我重命名“资源”文件夹(以防止访问)时,屏幕如下所示:
此外,我收到此错误:
java.io.IOException: Can't read resources/all used up.ttf
当然,这是意料之中的。
我还想指出,我从同一位置加载了其他音频和图像资源,它们工作正常。此位置位于 jar 直接外部的文件夹中。另外,我使用的是 Mac,但我在 Windows 上遇到了同样的问题。