从CRON job运行java代码

时间:2015-12-14 07:44:43

标签: java cron sh

在从CRON作业运行Java代码时遇到问题。

我正在尝试从CRON运行“.sh”文件,如下所示:

* * * * * root sh /run-test.sh >> /var/log/cron.log
# empty line

这个run-test.sh有:

java HelloWorld

当我导航到根文件夹,即“/”并运行命令:

sh run-test.sh

它将正确运行我的HelloWorld类并为我提供所需的输出。

但是,通过CRON标签,它总是说:

Error: Could not find or load main class HelloWorld

我无法判断这可能是什么原因。立即回复将有所帮助。感谢

3 个答案:

答案 0 :(得分:2)

您可能需要更改cron的当前工作目录。

* * * * * root cd / && sh /run-test.sh >> /var/log/cron.log

您的脚本中没有任何绝对路径,因此它将相对于工作目录运行。

答案 1 :(得分:1)

您应该在shell文件中使用类的完全限定名。例如com.nri.gov.master.ctrl.HelloWorld 像这样 -

$ JAVA com.nri.gov.master.ctrl.HelloWorld $ Var 2>> /var/log/console.log

答案 2 :(得分:1)

检查以下几点,

  • 设置Java home: export JAVA_HOME=[path-to-java-directory]
  • Java需要类的完整包名: java some.package.HelloWorld
  • Java类应该在classpath中可用。例如,要在类路径中设置jar: export CLASSPATH=yourjar.jar
  • 设置/运行cron的工作示例:

<强> * * * * * export JAVA_HOME=[path-to-java-directory]; /bin/sh your-executable-file.sh >> your-application-log-file.log