Cześć
Mam dość spory problem z programem, który ma za zadanie odczytywać dane z portu z podpiętego urządzenia i rysować na ich podstawie wykres poprzez graficzną bibliotekę javaFx. Mianowicie sam program działa prawidłowo, kiedy uruchamiam go z IDE intellij, natomiast kiedy utworzę plik wykonywalny .jar uruchamia się cała scena graficzna – klikam uruchom - program uruchamia metodę call z pliku PartialResultsTask - dochodzi w tej metodzie do warunku checkPattern z klasy Device, która ma za zadanie sprawdzić dostępne porty i otworzyć ten, na którym jest urządzenie i w tym momencie tak jakby program na coś czeka i nie przechodzi dalej. Używam biblioteki JSSC:
W terminalu wygląda to tak, że wyświetla się linia:
System.out.println("Is it working?");
metody call i kursos.
Nawet, kiedy w metodzie checkPattern wypiszę poprzez System.out.println jakąkolwiek wiadomość tekstową – nic się nie wyświetla w terminalu.
public static boolean checkPattern() {
System.out.println("Doesn't work in jar");
String portsArray[] = SerialPortList.getPortNames();
for (String port : portsArray) {
try {
serialPort = new SerialPort(port);
serialPort.openPort();
serialPort.setParams(115200, 8, 1, 0);
serialPort.readString();
Thread.sleep(1000);
if (Pattern.matches(PATTERN, (serialPort.readString()).trim())) {
System.out.println("nazwa portu: " + port);
isOpened = true;
return true;
}
serialPort.closePort();
} catch (SerialPortException e) {
System.out.println(e);
} catch (InterruptedException e) {
System.out.println(e);
}
}
return false;
}
Załączam link do kodu na githubie:
Program
Dołączyłem plik wykonywalny .jar do repozytorium - program nie przejdzie dalej bez urządzenia, ale generalnie zobaczycie to samo.
Mam wrażenie, że jest to związane z portem, a raczej brakiem uprawnień dla pliku(możliwe, że system blokuje wykonywanie, bo z tego co się orientuję IDE ma wyższe uprawnienia), żeby mógł odczytywać z niego dane, ewentualnie zależności maven’a nie dodają się do wykonywalnego .jar’a przy tworzeniu, ale w takim przypadku powinno wyrzucić jakiś wyjątek. Korzystam z systemu macos. Na windowsie mam ten sam problem.
Pozdrawiam,
szubi