質問

以下のコードは、その作業を行いますが、tempディレクトリにそれが実行されるたびに、フォントファイルのコピーを残します。これらのファイルの名前のの+〜JF7154903081130224445.tmp の番号が作成された各ファイルに対してランダムなようです。

InputStream fontStream = this.getClass().getResourceAsStream("handsean.ttf");
Font baseFont = Font.createFont(Font.TRUETYPE_FONT, fontStream);
fontStream.close();

私は、これは1.5.0_06から1.5.0_08にアップグレードしても問題が解決するだろうJDKのバグとして認識されているウェブ上sun.comでフォーラム歳議論や他のリソースを発見しました。しかし、私が使用していたバージョンは、新しいバージョン(1.6.0_13)です。

私は関連の操作が終了した後、フォントファイルを削除することで問題を解決しようとしたが、ファイルがその時点でロックされています。 Webアプリケーションが停止した後のファイルのみを削除することができます。

誰もがこの解決策を持っていますか?

役に立ちましたか?

解決

あなたのTTFファイルがアーカイブ内でない場合は、代わりのcreateFontののcreateFont(ファイル)を呼び出すことができます(入力ストリーム)

は、私の知る限りは、このバグは、Java 6に存在するとして、それはFontクラスのソースを見て十分です。

他のヒント

JDK1.6.0_16では、フォントマネージャは、キャッシュの一種として、一時ファイルを使用しているように見えるし、彼らだけが必要とされているフォントからグリフを読み込みます。また、JVMが通常終了したときにファイルを削除しますシャットダウンフックを、追加しています。 VMによっては、フォントレンダリングは、おそらくまた、ファイルへのアクセスを必要とするネイティブコードに委任されているので、ファイルのロックを維持することは私には合理的なようです。

ファイルは、実際にあなたのサーブレットコンテナ(Webアプリケーションを言及している)は、定期的に終了した場合でも、保存され、またはあなたが適切にクリーンアップにそのリソースを、それを許可せず、それを殺している?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top