从CRON作业运行java代码
从CRON作业运行Java代码时遇到问题 我正在尝试从CRON运行一个“.sh”文件,如下所示:从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
* * * * * 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,效果很好。谢谢:)