在java.ext.dirs中使用环境变量致使crontab执行不成功的问题及解决

在java.ext.dirs中使用环境变量致使crontab执行不成功的问题及解决

1 java.ext.dirs的使用和环境变量

在一个小项目中,出于简化须要,没有划分不一样的模块,而是视为一个模块,打成一个jar包,经过java -cp 类名的方式进行不一样的调用。
由于引用的jar包比较多,因此使用了java.ext.dirs进行简化处理。为了保证java自身的ext jar包引用,须要在java.ext.dirs中增长相应路径。
命令行以下:
java

java -Djava.ext.dirs=$JAVA_HOME/jre/lib/ext:/project/script/ -cp /project/script/ -Dlog4j.configuration=file:/project/script/log4j.properties com.galaxy.Comments 洛阳 /project/out/

这样,在 /project/script/中的全部jar文件都会自动加入到classpath中。
该命令在shell模式中运行正常。
sql

2 问题:在crontab中执行失败

上述命令原样复制到crontab中,会发现执行失败。通过分析,发现是在调用java自身的ext中jar包内容时失败。
初步判断是环境变量$JAVAHOME在crontab执行的环境中不存在形成的。
shell

3 解决办法

在crontab中,先导出环境变量,而后再执行脚本便可。
bash

35 11 * * * . /etc/profile;java -Djava.ext.dirs=$JAVA_HOME/jre/lib/ext:/project/script/ -cp /project/script/ -Dlog4j.configuration=file:/project/script/log4j-comment.properties com.kulv.spider.ota.comment.Comments 洛阳 /project/out/

Author: galaxyide

Created: 2016-08-11 Thu 13:24post

Emacs 24.5.6 (Org mode 8.2.10)spa

Validate命令行

相关文章
相关标签/搜索