Задание cron не выполняет Java JAR должным образом при перезагрузке - PullRequest
0 голосов
/ 09 января 2019

У меня есть файл jar, который мне нужно выполнить при перезагрузке системы.

Файл JAR делает две вещи

  • создает образец файла на рабочем столе с текстом

  • показать всплывающее окно с использованием диалогового окна

Я могу выполнить файл jar и выполнить обе задачи, когда добавляю запись с помощью crontab -e, как показано ниже, и перезагружаюсь.

@reboot sleep 60 && /home/username/Desktop/run.sh

run.sh

#!/bin/sh
export DISPLAY=:0
/home/username/Downloads/jre8/jre1.8.0_191/bin/java -jar /home/username/Desktop/test.jar

Мое требование - мне нужно сделать это программно. Итак, для тестирования я добавил файл в / etc / cron.d с именем run, который имеет следующие строки

@reboot root sleep 60 && /home/username/Desktop/run.sh

и перезагрузил систему.

Оба файла run.sh и run имеют разрешение + x, данное с помощью chmod.

Jar выполняется и создает файл примера, но не показывает всплывающее окно.

Java-код работающего фляги показан ниже

FileWriter fw = new FileWriter("/home/username/Desktop/abc.txt");
PrintWriter pw = new PrintWriter(fw);
pw.print("test");
pw.close();
fw.close();

JFrame parent = new JFrame();
JOptionPane.showMessageDialog(parent,"Test pop-up");
System.exit(0);

Есть идеи, почему я не могу открыть всплывающее окно? Я работаю на Ubuntu 18.04 с использованием Oracle VM Virtual Box.

Спасибо за ваше время и помощь!

+++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++

Обновление: Мне удалось заставить всплывающее окно отображаться при перезагрузке, используя зарегистрированного пользователя в файле /etc/cron.d/run

@reboot username sleep 120 && /home/username/Desktop/run.sh

Кроме того, изменен всплывающий код в банке, как показано ниже

JFrame frame = new JFrame("Sample");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(200, 200);
frame.setVisible(true);

Но я хочу иметь возможность запускать его как root, поэтому при изменении записи обратно на

@reboot root sleep 120 && /home/username/Desktop/run.sh

всплывающее окно не отображается, создается только файл.

...