Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java crontab运行jar文件时出错_Java_Bash_Jar_Cron - Fatal编程技术网

Java crontab运行jar文件时出错

Java crontab运行jar文件时出错,java,bash,jar,cron,Java,Bash,Jar,Cron,我正在用开放的jdk和crontab运行Ubuntu10.10。我制作了一个整洁的小Java应用程序,它做了一些很酷的东西,并将其导出为一个可运行的jar文件。我可以从命令行运行它,但是我需要一些每天运行一次的东西。所以我在一个cron作业中编写了一个shell脚本,该脚本将实际调用jar文件。shell脚本在单独运行时工作正常,它看起来如下所示: #!/bin/sh /usr/bin/java -jar /root/proj/CoolStuff.jar 工作完美。因此,我在crontab中添

我正在用开放的jdk和crontab运行Ubuntu10.10。我制作了一个整洁的小Java应用程序,它做了一些很酷的东西,并将其导出为一个可运行的jar文件。我可以从命令行运行它,但是我需要一些每天运行一次的东西。所以我在一个cron作业中编写了一个shell脚本,该脚本将实际调用jar文件。shell脚本在单独运行时工作正常,它看起来如下所示:

#!/bin/sh
/usr/bin/java -jar /root/proj/CoolStuff.jar
工作完美。因此,我在crontab中添加了以下内容:

23 14 * * * /root/proj/runScript.sh > /root/proj/log.txt 2>&1

这并不完美。事实上,它不会运行。log.txt将显示“错误”。很普通,对吧?我检查了我的环境变量,没有什么特别之处。还有什么我可能遗漏的吗?你知道从这里到哪里去吗?有什么方法可以让我每天轻松地运行此脚本吗?

检查该文件的执行权限

cron以不同的权限运行,而不是您登录时获得的权限

您还尝试访问/root。
尝试将脚本重新定位到另一个“非根”目录。

通过注释当前的
/usr/bin/java..
并在一行中插入
set
来查看crontab的环境

现在从命令行执行
set>tmpEnvVarList.txt
,并与log.txt中的内容进行比较

几乎可以肯定的是,您的.profile或.bash_rc(或其他)正在设置对您的crontab不可用的环境变量。您需要添加
。配置文件
etc发送给您的脚本

国会预算办公室的想法也很好


我希望这有帮助

我最初将所有文件都放在一个非根目录中,但我正在根目录的crontab中运行这些脚本。此外,所有权限都是777。这似乎是解决方案。它会像导出cron环境中不存在的所有环境变量那样简单吗?我实际上是在导出路径变量,但上面没有显示。请进行实验,看看结果如何。我会尝试找出添加哪个
$HOME/.profile$HOME/.bash\u rc
etc可以解决这个问题。然后,您的代码将适应您对环境所做的任何更改。另外,脚本的标题上写着
#/bin/sh
。您使用的是linux还是unix?如果是linux,为什么不是用户
#/bin/bash
。祝你好运。我加了一句“。配置文件”并捕获cron作业的输出。我现在得到了“stdin:is not a tty”,后面的环境变量比我手动执行脚本后收到的要少……这是由我在crontab中的疯狂格式造成的。目前正在试验环境变量。结果证明,这不起作用:(我添加了几乎所有的环境变量,并使用了.profile和.bashrc,但运气不好。仍然收到一条不起眼的“错误”消息。