Как указать путь к файлу из 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-файл не может найти файл со шрифтом, т.к. это архив, то путь к файлу, наверное, изменился? Видимо нужно как-то по другому указать к нему путь. Подскажите, как это сделать?