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();

私が抱えている問題は、Amazon の仮想サーバーに適切なフォントがインストールされていないため、アプリケーションで画像/チャート関連の操作を実行できないことです。詳細については、これを参照してください。彼らの顧客サポートは、カスタム VM イメージ (Oracle JDK には一連のフォントが付属しているため、フォントまたは Oracle JDK がインストールされている) を使用することを提案しましたが、これは私にとってクリーンなソリューションではありません。

私の質問は次のとおりです。コードを書き直すか、別の方法でパッケージ化して、追加のフォントを必要とせずに Open JDK の新規インストールで実行できるようにするにはどうすればよいですか (可能な場合)。

ちなみに、ここに私が得ているエラーの一部があります:

2011 年 10 月 9 日 11:05:18 AM org.apache.catalina.core.StandardWrapperValve 呼び出し SEVERE: サーブレット 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(FontDesigns) .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

Google Fonts APIはどうですか?

于 2011-10-20T03:31:16.737 に答える