Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.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
从CRON作业运行java代码_Java_Cron_Sh - Fatal编程技术网

从CRON作业运行java代码

从CRON作业运行java代码,java,cron,sh,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

从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

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

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


$JAVA com.nri.gov.master.ctrl.HelloWorld$Var 2>/Var/log/console.log检查以下几点:

  • 设置Java主页:
    导出Java\u主页=[Java目录路径]
  • Java需要类的完整包名:
    javasome.package.HelloWorld
  • Java类应该在类路径中可用。例如,要在类路径中设置jar:
    导出CLASSPATH=yourjar.jar
  • 设置/运行cron的工作示例:

***导出JAVA_HOME=[path to JAVA directory]/bin/sh your-executable-file.sh>>应用程序日志文件.log

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

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

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

请显示
运行test.sh的内容。Cron清理环境,因此您需要对其进行设置(例如,
CLASSPATH
)。另外,您是否以root用户身份运行Java进程?!run-test.sh仅包含:java HelloWorld,是的,我以根用户身份运行它。在从IDE构建jar之前,您是否创建了指定的主类?尝试过,但也得到了相同的响应。是的,您的代码有意义+1。同样,当我尝试从CRON作业运行Java类时,代码如下:****root(cd/;Java HelloWorld)>/var/log/CRON.log,效果很好。谢谢:)