#java #fonts #amazon-web-services #openjdk
#java #шрифты #amazon-веб-сервисы #openjdk
Вопрос:
Этот вопрос является общим, но также связан с 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();
Проблема, с которой я сталкиваюсь, заключается в том, что на виртуальных серверах Amazon не установлены надлежащие шрифты, и в результате вы не можете выполнять в своем приложении работы, связанные с изображениями / диаграммами. Смотрите это для получения дополнительной информации.
Их служба поддержки предложила использовать пользовательский образ виртуальной машины (с установленными шрифтами или Oracle JDK, поскольку Oracle JDK поставляется с набором шрифтов), что для меня не является чистым решением.
Мой вопрос: как я могу переписать свой код или упаковать его по-другому, чтобы он запускался при новой установке Open JDK без необходимости дополнительных шрифтов (если это вообще возможно).
Кстати, вот часть ошибки, которую я получаю:
9 октября 2011 г. 11:05:18 org.apache.catalina.core.StandardWrapperValve вызывает SERIOUS: Servlet.service() для приложения ZipGrocery сервлета, которое выдало исключение java.lang.Ошибка: Вероятная фатальная ошибка: шрифты не найдены. в sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1088) в sun.font.FontManager.initialiseDeferredFont(FontManager.java:967) в sun.font.CompositeFont.doDeferredInitialization(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.getMetrics(FontDesignMetrics.java:301) в sun.java2d.SunGraphics2D.getFontMetrics(SunGraphics2D.java: 787) в nl.jamiecraane.imagegenerator.impl.TextImageImpl.getFontMetrics(TextImageImpl.java:219) в nl.jamiecraane.imagegenerator.impl.TextImageImpl.WriteLine(TextImageImpl.java:212)
Спасибо
Ответ №1:
Если у вас был реальный шрифт, который вы имели соответствующее лицензирование для распространения, вы могли бы упаковать, загрузить и зарегистрировать шрифт как часть вашего распространяемого приложения.
Font font = Font.createFont(Font.TRUETYPE_FONT, new File("A.ttf"));
return font.deriveFont(24f);
Я обнаружил, что OpenJDK является глючным и ненадежным для производственных сред. Я бы просто пошел с Oracle JDK, если сможете.
Ответ №2:
Как насчет API шрифтов Google?
Комментарии:
1. Спасибо за ответ, но я не думаю, что это вариант для меня (с точки зрения бизнеса).