我有一个jar文件,需要在系统重新引导时执行。
jar文件有两件事
在桌面上创建带有一些文本的示例文件
使用秋千对话框显示弹出窗口
当我使用crontab -e如下所示添加条目并重新启动时,我能够执行jar文件并执行这两个任务。
@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文件都具有使用chmod授予的+ x权限。
该jar执行并创建一个示例文件,但不显示任何弹出窗口。
可运行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);
任何想法,为什么我无法显示弹出窗口? 我正在使用Oracle VM Virtual Box在Ubuntu 18.04上运行。
感谢您的时间和帮助!
++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++
更新: 通过使用/etc/cron.d/run文件
中的登录用户,我设法使弹出窗口在重新启动时显示。@reboot username sleep 120 && /home/username/Desktop/run.sh
此外,如下所示修改了jar中的弹出代码
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
弹出窗口不显示,仅创建文件。