В исполняемом jar не работает принтер

Рейтинг: 1Ответов: 1Опубликовано: 30.04.2023

Всем привет! У меня такая проблема - при сохранении проекта в исполняемый jar, теряется функция отправки изображений на печать. Однако в ide работает отлично. Суть проги следующая - при вводе номера артикула, автоматически распечатывается этикетка с нужным артикулом на термопринтере. При запуске jar появляется интерфейс, но после введения артикула ничего не происходит.

Файл пакую через Project Structure - Artifacts, Build Artifacts. Папка с готовыми файлами этикеток помечена как Resources Root.

Подскажите, от чего может теряться связь с принтером в jare?

String str = jTextField.getText();
String result = str + ".jpg";

DocFlavor flavor = DocFlavor.INPUT_STREAM.JPEG;

PrintService[] services = PrintServiceLookup.lookupPrintServices(flavor, null);

DocAttributeSet aset = new HashDocAttributeSet();
MediaSizeName mediaSizeName = MediaSize.findMedia(58,40,MediaPrintableArea.MM);
aset.add(mediaSizeName);
aset.add(new MediaPrintableArea(0, 0, 58, 40, MediaPrintableArea.MM));
aset.add(OrientationRequested.PORTRAIT);
try {
    InputStream inputStream = new FileInputStream("resources/" + result);

    Doc doc = new SimpleDoc(inputStream, flavor, aset);
    if (services.length > 0) {
        DocPrintJob job = services[0].createPrintJob();
        job.print(doc, null);
    }
} catch (Exception ex) {
    ex.printStackTrace();
}

Решение найдено благодаря подсказке – Byb

Заменила строку со стримом на:

InputStream inputStream = 
his.getClass().getClassLoader().getResourceAsStream(result);

Ответы

▲ 0Принят

Заменила строку со стримом на:

InputStream inputStream = his.getClass().getClassLoader().getResourceAsStream(result);

Это решило проблему.