【问题标题】:Java applet: Read ttf file - access deniedJava 小程序:读取 ttf 文件 - 访问被拒绝
【发布时间】:2010-10-09 17:26:07
【问题描述】:

我的 Java 小程序初始化函数中有以下几行:

try {
  this.font = Font.createFont(
    Font.TRUETYPE_FONT,
    new File("fonts/myfont.ttf")
  ).deriveFont(24f);
  GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont(font);
} catch(Exception ex){
  System.out.println(ex);
}

当我使用 appletviewer 打开小程序时,字体按预期加载。但是,当我使用任何 Web 浏览器打开 HTML 页面时,我在 Java 控制台中收到此错误:

java.security.AccessControlException: 访问被拒绝(java.io.FilePermission fonts/myfont.ttf 读取)

并加载默认字体。

(如何)我可以解决这个问题?

【问题讨论】:

    标签: java fonts applet appletviewer


    【解决方案1】:

    您无法使用小程序访问本地文件——这是设计使然!

    您可以(并且应该)将字体文件嵌入到您的.jar 文件中,并使用Class.getResourceAsStream 或类似方法来访问它(Font.createFont 有一个需要InputStream 的重载,这正是类型Class.getResourceAsStream 返回)。

    【讨论】:

    • 我想要这个,但我不知道怎么做...你能发布一个代码示例吗?
    • @elektronikLexikon:我不能(因为我认为你自己做这件事很简单),但从玩(并阅读)Class.getResourceAsStream 开始,确保你了解该功能是如何定位的资源。将字体文件放在正确的位置(通常与您的.class 文件位于同一位置),然后使用它直到它工作。一旦成功,将其传递给Font.createFont 很容易。
    猜你喜欢
    • 2010-09-22
    • 1970-01-01
    • 2015-07-26
    • 2016-09-28
    • 2013-05-26
    • 1970-01-01
    • 1970-01-01
    • 2012-05-14
    • 2010-12-28
    相关资源
    最近更新 更多