Java未在crontab中运行

Java未在crontab中运行,java,cron,Java,Cron,当我从命令行启动时,java-jar/home/scripts/relay.jar运行良好。该命令生成一个文件:relay.txt 在crontab中 /usr/bin/java -jar /home/oneprovider/relay.jar 没有生产任何东西。我最初在没有/usr/bin/的情况下使用了它,但后来使用了whichjava,并添加了绝对路径,但运气不佳。jar文件最初是为windows编写的,但从命令行启动时,它在Linux中运行良好 我遗漏了什么?同意工作目录可能是问题所在

当我从命令行启动时,
java-jar/home/scripts/relay.jar运行良好。该命令生成一个文件:relay.txt

在crontab中

/usr/bin/java -jar /home/oneprovider/relay.jar
没有生产任何东西。我最初在没有/usr/bin/的情况下使用了它,但后来使用了
whichjava
,并添加了绝对路径,但运气不佳。jar文件最初是为windows编写的,但从命令行启动时,它在Linux中运行良好


我遗漏了什么?

同意工作目录可能是问题所在。您可以编写一个shell脚本来包装java调用并设置工作目录吗?比如:

#!/bin/sh -e
cd /home/oneprovider 
/usr/bin/java -jar /home/oneprovider/relay.jar

然后将cron作业改为运行脚本。记住chmod它,并确保cron用户可以写入目录(如果它不是您的个人crontab)

您能验证java进程是否在应该运行的时候运行吗?您在crontab中执行的命令与您手动执行的命令不同?为什么不把
java-jar/home/scripts/relay.jar
放在crontab中呢?另外,您希望在哪里创建文件(为什么),以及创建该文件的代码是什么?@JBNizet当我从命令行启动它时,它会在jar文件所在的同一目录中创建该文件。代码是嵌入在jar中的。那么你和我们都不能解释太多。守则很重要。我猜想代码实际上在当前目录中创建了一个文件,cron作业的当前目录不是包含jar文件的目录。做一个汽车类比:如果我开车向西走80公里,我最终会到达法国里昂。在家里做同样的事情不会把你带到同一个地方,也不会使用/usr/bin/java“-Duser.dir=/home/oneprovider“-jar/home/oneprovider/relay.jar