zoukankan      html  css  js  c++  java
  • 在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 -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模式中运行正常。

    2 问题:在crontab中执行失败

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

    3 解决办法

    在crontab中,先导出环境变量,然后再执行脚本即可。

    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: galaxy

    Created: 2016-08-11 Thu 13:24

    Emacs 24.5.6 (Org mode 8.2.10)

    Validate

  • 相关阅读:
    阿里云 CDN+OSS 解决方案
    一次完整的HTTP请求过程
    apache多站点配置中ServerAlias什么意思
    legend3---apache配置https
    legend3---Fiddler如何抓手机app的包
    Fiddler:增加IP列
    http请求报文格式和响应报文格式
    http请求头中Referer的含义和作用
    Chrome保存的HAR文件怎么打开
    Android Studio 错误 Duplicate files copied in APK META-INF/LICENSE.txt
  • 原文地址:https://www.cnblogs.com/galaxy-gao/p/5760611.html
Copyright © 2011-2022 走看看