有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

从CRON作业运行java代码

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

我试图从CRON运行一个“.sh”文件,如下所示:

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

这是一个运行测试。上海有:

java HelloWorld

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

sh run-test.sh

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

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

Error: Could not find or load main class HelloWorld

我无法判断这是什么原因。立即回复会很有帮助。谢谢


共 (3) 个答案

  1. # 1 楼答案

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

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

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

  2. # 2 楼答案

    您应该在shell文件中为类使用完整的限定名。例如com。nri。gov.master。ctrl。你好世界 像这样

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

  3. # 3 楼答案

    检查以下几点:

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

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