当我在命令行上运行Java程序时,我在加载自定义字体时遇到问题。我收到错误消息:
Reason(IOException):无法读取Resources / Fonts / customFont.ttf
java.io.IOException:无法读取Resources / Fonts / customFont.ttf
但是,当我在Eclipse中运行程序时,会找到Font文件。
当我从Eclipse导出程序时,Font文件驻留在可运行的Jar文件中。
以下是代码:
File aFile= new File("Resources/Fonts/customFont.ttf");
try {
System.out.println("About to access: " + aFile.toString());
font = Font.createFont(Font.TRUETYPE_FONT, aFile);
} catch (FontFormatException e) {
// TODO Auto-generated catch block
System.out.println("Reason (FontFormat): " + e.getMessage());
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("Reason (IOException): " + e.getMessage());
e.printStackTrace();
}
font = font.deriveFont(Font.BOLD,15);
现在,这是我尝试通过阅读其他人的帖子来实现这一目标的最新方式。
这是我尝试过的另一种方式:
String filename="/Fonts/customFont.ttf";
Font font = null;
File aFile= new File(getURL(filename).getFile());
try {
System.out.println("About to access: " + aFile.toString());
font = Font.createFont(Font.TRUETYPE_FONT, aFile);
} catch (FontFormatException e) {
// TODO Auto-generated catch block
System.out.println("Reason (FontFormat): " + e.getMessage());
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("Reason (IOException): " + e.getMessage());
e.printStackTrace();
}
font = font.deriveFont(Font.BOLD,15);
private static URL getURL(String imageFilename) {
URL aURL= null;
aURL= Airplane.class.getResource(imageFilename);
System.out.println("Got URL: " + aURL.toString());
return aURL;
}
并收到以下错误消息:
获得网址:rsrc:字体/ customFont.ttf
即将访问:字体/ customFont.ttf
Reason(IOException):无法读取字体/ customFont.ttf
java.io.IOException:无法读取字体/ customFont.ttf
在java.awt.Font.createFont(Font.java:1008)
在Game.Screen.main(Screen.java:104)
感谢任何帮助!
谢谢!