Как указать путь к файлу из Jar файла?

Никак не могу разобраться с поиском файла в папках. Написал тестовую программу для загрузки и использования шрифта (использую IntelliJIdea). В папке, где находится программа есть папка "fonts" со шрифтом. Программа загружает шрифт и использует его для вывода надписи. Вот программа - у меня всё работает нормально.

public class ProblemaFile extends JPanel {
    JLabel mainLabel = new JLabel();
    private BufferedImage sr;
    Graphics2D g2;
    Font myArial;
    private Font myFontBig;
 
    ProblemaFile() {
        // загружаю файл из папки fonts, которая лежит в этом же каталоге
        InputStream arialStream = Class.class.getResourceAsStream("/fonts/ARIALN.ttf");
        try {
            // создаю объект шрифт
            myArial = Font.createFont(Font.TRUETYPE_FONT, arialStream);
        } catch (FontFormatException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        // указываю размер шрифта
        myFontBig = myArial.deriveFont(40f);
 
        JFrame myFrame = new JFrame();
        myFrame.setSize(300, 300);
        myFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        myFrame.setLayout(null);
        setLayout(null);
        setBounds(0, 0, 300, 300);
        myFrame.add(this);
        add(mainLabel);
        mainLabel.setBounds(0, 0, 300, 300);
        sr = new BufferedImage(300, 300, BufferedImage.TYPE_INT_ARGB);
        g2 = sr.createGraphics();
        // цвет
        g2.setColor(new Color(0,0,0));
        // шрифт
        g2.setFont(myFontBig);
        // делаю надпись
        g2.drawString("ASDFGH",70,70);
        // накладываю полученное изображение на mainLabel
        mainLabel.setIcon(new ImageIcon(sr));
        myFrame.setVisible(true);
    }
 
    public static void main(String[] args) {
        ProblemaFile pf = new ProblemaFile();
    }
}

Потом я создаю Jar-файл (я делаю это в IntelliJIdea). Но при запуске полученного Jar-файл получаю исключение:

java.io.IOException: Problem reading font data.

Насколько я понимаю, jar-файл не может найти файл со шрифтом, т.к. это архив, то путь к файлу, наверное, изменился? Видимо нужно как-то по другому указать к нему путь. Подскажите, как это сделать?


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