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

  • 相关阅读:
    在CMD下如何搜索某个名字的文件?
    如何设置ESXi中的虚拟机随主机一同启动?
    ubuntu 安装 Cmake(转)
    unique_ptr与std::move的使用
    这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)(转)
    Tensorflow设置显存自适应,显存比例
    Protobuf学习
    tensorflow serving 打印调试log
    Linux下监视NVIDIA的GPU使用情况(转)
    tensorflow serving GPU编译问题
  • 原文地址:https://www.cnblogs.com/galaxy-gao/p/5760611.html
Copyright © 2011-2022 走看看