无法让 cron 打开带有 GUI 的 Java 程序

无法让 cron 打开带有 GUI 的 Java 程序

我制作了一个简单的“日记”程序,它将打开 GUI,提示输入条目和一些因素,并将此信息打印到当前日期下的文件中。我编写了一小段 Java 代码,在运行时执行此操作,我想使用 cron 安排它每天运行。

我还编写了一个小脚本(“javashell.sh”),用于切换到我保存 Java 代码的目录,对其进行编译,然后运行 ​​Java 程序。其内容如下:

/bin/bash #!/bin/bash

cd /home/otolithic/桌面/项目;
javac 日志.java;
Java 日志;

(它太短了,感觉毫无意义,但我认为有必要从 cron 轻松运行该程序;我对 Linux 完全陌生,所以如果这很奇怪,请告诉我)

我将其放在 usr/local/bin 中,这样我只需在终端中输入“javashell.sh”,日志应用程序就可以正常运行。但是,当我尝试使用此命令创建 cronjob 时,我可以在日志中看到它已运行,但没有弹出任何 GUI 来要求输入日志条目,就像我在 cron 之外运行 javashell.sh 时一样。

我已尝试过(分钟/小时/等之后):

导出 DISPLAY=:0 && javashell.sh
显示=:0 javashell.sh
env DISPLAY=:0 javashell.sh
$DISPLAY=:0 && javashell.sh
cd ~/path/to/file && javac Journal.java && java Journal
env DISPLAY=:0 && cd ~/path/to/file && javac Journal.java && java Journal

没有效果。

我检查了一下,我的显示器实际上是 :0,所以问题不在于此。那么为什么它不起作用呢?

编辑:也尝试过env DISPLAY=:0 && cd /home/otolithic/Desktop/projects && javac Journal.java && java Journal

答案1

您无法通过 cron 在显示器上打开程序。您希望通过 cron 运行的任何作业都不能要求登录用户会话的任何服务,包括放置 GUI 应用程序的有效显示器。

答案2

crontab 可能使用与您不同的用户。当您说

 cd ~/path/to/file

您正在使用 从您自己的用户目录指向该文件~。您应该使用绝对路径,在您的例子中是这样的:

cd /home/yourusername/path/to/file

相关内容