Не удается заставить System.setProperty() работать в Jar
Я использую этот код:
File jPosFile = new File("JPos.xml");
System.setProperty(JposPropertiesConst.JPOS_POPULATOR_FILE_PROP_NAME, jPosFile.getAbsolutePath());
Чтобы настроить мой принтер Pos. Код работает нормально, когда я запускаю его из intellij. Но когда я упаковываю его в банку, я получаю эту ошибку:
jpos/res/jpos.properties file not found
jpos/res/jpos.properties file not found
jpos/res/jpos.properties file not found
jpos.JposException: Service does not exist in loaded JCL registry
at jpos.loader.simple.SimpleServiceManager.createConnection(SimpleServiceManager.java:179)
at jpos.loader.JposServiceLoader.findService(JposServiceLoader.java:154)
at jpos.BaseJposControl.open(BaseJposControl.java:494)
at ashirwada.pos.Data.FrontEnd.PrinterServiceCom.init(PrinterServiceCom.java:21)
at ashirwada.pos.Main.init(Main.java:124)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(Unknown Source)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
Пробовал и этот подход:
System.setProperty(JposPropertiesConst.JPOS_POPULATOR_FILE_PROP_NAME, Main.class.getResource("/JPos.xml").getFile());
скопировав jpos.xml в папку ресурсов. Все тот же результат. Работает на интеллиг. Не из банки.
Любая помощь могла бы быть полезна.
РЕДАКТИРОВАТЬ:
Вот как я называю файл:
public static void init() {
File jPosFile = new File("JPos.xml");
System.setProperty(JposPropertiesConst.JPOS_POPULATOR_FILE_PROP_NAME, jPosFile.getAbsolutePath()); //todo doesn't work in jar
try {
printer.open("POSPrinter");
printer.claim(1000);
printer.setDeviceEnabled(true);
drawer.open("CashDrawer");
drawer.claim(1000);
drawer.setDeviceEnabled(true);
System.out.println("Printer Initialized");
} catch (Exception e) {
e.printStackTrace();
System.out.println("Printer initialization failed");
}
}
1 ответ
Когда вы упаковываете вашу программу как jar, тогда нет файла с именем "JPos.xml".
Либо вы должны включить JPos.xml в свой jar-файл и загрузить его как ресурс (используя, например, getClass().getClassLoader().getResource("JPos.xml")
) - или вы должны распространять файл JPos.xml отдельно от вашего фляги.