此问题是通用的,但也与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();
我遇到的问题是亚马逊的虚拟服务器没有安装正确的字体,因此您无法在应用程序中执行与图像/图表相关的操作。有关详细信息,请参阅this。 他们的客户支持建议使用自定义VM映像(自Oracle JDK附带一组字体以来安装了字体或Oracle JDK),这对我来说不是一个干净的解决方案。
我的问题是: 如何重写我的代码,或以不同的方式打包它,以便它在全新安装的Open JDK上运行,不需要额外的字体(如果可能的话)。
顺便说一句,这是我得到的错误的一部分:
2011年10月9日上午11:05:18 org.apache.catalina.core.StandardWrapperValve 为servlet ZipGrocery Application调用SEVERE:Servlet.service() 抛出异常java.lang.Error:可能的致命错误:找不到字体。 at sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1088) at sun.font.FontManager.initialiseDeferredFont(FontManager.java:967) 在 sun.font.CompositeFont.doDeferredInitialisation(CompositeFont.java:254) 在sun.font.CompositeFont.getSlotFont(CompositeFont.java:334)at sun.font.CompositeStrike.getStrikeForSlot(CompositeStrike.java:77)at sun.font.CompositeStrike.getFontMetrics(CompositeStrike.java:93)at sun.font.FontDesignMetrics.initMatrixAndMetrics(FontDesignMetrics.java:358) 在sun.font.FontDesignMetrics。(FontDesignMetrics.java:349)at sun.font.FontDesignMetrics.getMetrics(FontDesignMetrics.java:301)at sun.java2d.SunGraphics2D.getFontMetrics(SunGraphics2D.java:787)at at nl.jamiecraane.imagegenerator.impl.TextImageImpl.getFontMetrics(TextImageImpl.java:219) 在 nl.jamiecraane.imagegenerator.impl.TextImageImpl.writeLine(TextImageImpl.java:212)
由于
答案 0 :(得分:1)
如果你有一个实际的字体,你有适当的许可分发,你可以打包,加载和注册字体作为分布式应用程序的一部分。
Font font = Font.createFont(Font.TRUETYPE_FONT, new File("A.ttf"));
return font.deriveFont(24f);
我发现OpenJDK在生产环境中有缺陷且不可靠。如果可以的话,我会选择Oracle的JDK。
答案 1 :(得分:0)
Google Fonts API怎么样?