SpringBootジャーは、TrueTypeフォントをロードすることはできません

セモ:

私はspringboot脂肪ジャーに含まれているフォントを、使用したいとき、私は奇妙な行動を発見しました。フォントをロードし、私のローカルマシン上でテストを実行すると/resources、ディレクトリ、それが完璧に動作します。私はMavenを使用してアプリケーションを構築し、端末からそれを実行した場合でも、その後、私が受け取ることになります。

java.io.IOException: Problem reading font data.
at java.awt.Font.createFont0(Font.java:1000)
at java.awt.Font.createFont(Font.java:877)

私は解決策を見つけることを試みたし、次のように行きました:

  • (時々破損したテーブルやSTHについては、別のエラーで。)別のフォントを使用して
  • ドッキングウィンドウの構築されたさまざまなバージョンは、テスト動作にコンテナをOpenJDKの
  • Ubuntuのコンテナ、インストールOpenJDKのを構築
  • Debianのイメージ、インストールFC-キャッシュを使用して経由でフォントを利用可能に
    • /usr/share/fonts/truetype/europlate
    • fc-cache -f -v
  • ちょうど瓶内からのアクセスに問題がないことを、確認するために、一時、ファイルを作成しました。
  • あまりにも、フォントのロードが失敗した私の端末からアプリケーションを実行しました
  • エディタ上のフォント作品を使用して、アプリはIDE(なしテスト)から実行しても

方法:

     public Font getFont() throws IOException, FontFormatException {
        File f = File.createTempFile("dang", "tmp");
        assert f != null;
        f.delete();
        ClassLoader classLoader = getClass().getClassLoader();
        Font font = Font.createFont(Font.TRUETYPE_FONT, classLoader.getSystemResourceAsStream("EuroPlate.ttf"));
        font.deriveFont(105f);
        System.out.println(font.getFontName());
        return font;
    }

EDIT: - >作品IDEには、アプリケーションを実行します

失敗した> - ターミナルは、アプリケーションを実行します

スタックトレース:

java.io.IOException: Problem reading font data.
    at java.desktop/java.awt.Font.createFont0(Font.java:1183)
    at java.desktop/java.awt.Font.createFont(Font.java:1052)
    at components.NumberPlateUtility.getFont(NumberPlateUtility.java:81)
    at components.NumberPlateUtility.completeImage(NumberPlateUtility.java:173)
    at main.NumberplateClientCommands.one(NumberplateClientCommands.java:63)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:223)
    at org.springframework.shell.Shell.evaluate(Shell.java:169)
    at org.springframework.shell.Shell.run(Shell.java:134)
    at org.springframework.shell.jline.InteractiveShellApplicationRunner.run(InteractiveShellApplicationRunner.java:84)
    at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:783)
    at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:773)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1242)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1230)
    at main.Main.main(Main.java:20)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
    at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)

リポジトリ:https://github.com/Semo/numberplate_generator.git

Malathi:

このコードは動作します:

public Font getFont() throws IOException, FontFormatException {
        File f = File.createTempFile("dang", "tmp");
        assert f != null;
        f.delete();
        ClassLoader classLoader = getClass().getClassLoader();
        Font font = Font.createFont(Font.TRUETYPE_FONT, classLoader.getResourceAsStream("EuroPlate.ttf"));
        font.deriveFont(105f);
        System.out.println(font.getFontName());
        return font;
    }

の変化に注意してくださいclassLoader.getResourceAsStreamこのチェックの答えをより多くの説明を。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=228255&siteId=1