0

这个问题是通用的,但也与 Amazon Web Services 有关。

我正在尝试将 Java 应用程序部署到 Amazon 云服务器,但该应用程序无法启动,因为它使用 AWT 字体(请参阅以下行):

TextImage testImage = new TextImageImpl(128, 32, new Margin(0, 8));

// Declare or read the fonts you need
Font header = new Font("Sans-Serif", Font.BOLD, 24);

// 1. specify font and write text with a newline
testImage.useFont(header).writeLine(text).newLine();

我遇到的问题是亚马逊的虚拟服务器没有安装正确的字体,因此您无法在应用程序中执行与图像/图表相关的内容。有关更多信息,请参阅。他们的客户支持建议使用自定义 VM 映像(安装了字体或 Oracle JDK,因为 Oracle JDK 带有一组字体),这对我来说不是一个干净的解决方案。

我的问题是:我怎样才能重写我的代码,或者以不同的方式打包它,以便它在 Open JDK 的全新安装上运行,而不需要额外的字体(如果可能的话)。

顺便说一句,这是我得到的错误的一部分:

2011 年 10 月 9 日上午 11:05:18 org.apache.catalina.core.StandardWrapperValve 调用严重:servlet ZipGrocery 应用程序的 Servlet.service() 引发异常 java.lang.Error:可能的致命错误:未找到字体。在 sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1088) 在 sun.font.FontManager.initialiseDeferredFont(FontManager.java:967) 在 sun.font.CompositeFont.doDeferredInitialisation(CompositeFont.java:254) 在 sun.font。 CompositeFont.getSlotFont(CompositeFont.java:334) 在 sun.font.CompositeStrike.getStrikeForSlot(CompositeStrike.java:77) 在 sun.font.CompositeStrike.getFontMetrics(CompositeStrike.java:93) 在 sun.font.FontDesignMetrics.initMatrixAndMetrics(FontDesignMetrics .java:358) 在 sun.font.FontDesignMetrics.(FontDesignMetrics.java:349) 在 sun.font.FontDesignMetrics。

谢谢

4

2 回答 2

1

如果你有一个实际的字体,你有适当的许可来分发,你可以打包、加载和注册字体作为你的分布式应用程序的一部分。

Font font = Font.createFont(Font.TRUETYPE_FONT, new File("A.ttf"));
return font.deriveFont(24f);

我发现 OpenJDK 在生产环境中存在缺陷且不可靠。如果可以的话,我会选择 Oracle 的 JDK。

于 2011-10-20T03:22:27.260 回答
0

谷歌字体 API怎么样?

于 2011-10-20T03:31:16.737 回答