在从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
我无法判断这可能是什么原因。立即回复将有所帮助。感谢
答案 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)
检查以下几点,
export JAVA_HOME=[path-to-java-directory]
java some.package.HelloWorld
export CLASSPATH=yourjar.jar
<强> * * * * * export JAVA_HOME=[path-to-java-directory]; /bin/sh your-executable-file.sh >> your-application-log-file.log
强>