Jar файл выдаёт исключение

Класс GameField

private Font myFont0;
{
    try {
        myFont0 = (Font) StaticMethods.loadFile("ARIALN.ttf");
    } catch (IOException e) {
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } catch (FontFormatException e) {
        e.printStackTrace();
    }
}

метод loadFile() для загрузки класс StaticMethods

public static Font loadFile(String filePath) throws IOException, ClassNotFoundException, FontFormatException {
    try (final ObjectInputStream myObjectFile = new ObjectInputStream(new BufferedInputStream(GameField.class
            .getClassLoader().getResourceAsStream(filePath)))) {
        return Font.createFont(Font.TRUETYPE_FONT, myObjectFile);
    } catch (FontFormatException e) {
        e.printStackTrace();
    }
    return null;
}

Ответы (1 шт):

Автор решения: Дмитрий

ваш шрифт должен лежать в папке ресурсов. попробуйте использовать такой метод:

import java.awt.Font;
import java.awt.FontFormatException;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;

public class GameField {

    public static Font loadFile(String filePath) throws IOException, ClassNotFoundException, FontFormatException {
        try (final InputStream is = new BufferedInputStream(GameField.class.getClassLoader().getResourceAsStream(filePath))) {
            return Font.createFont(Font.TRUETYPE_FONT, is);
        }
    }

    public static void main(String[] args) throws Exception {
        Font font = loadFile("assets/fonts/ARIALN.ttf");
        Font myFont1 = font.deriveFont(30f);
        System.out.println(myFont1);
    }

}
→ Ссылка