通过sh脚本启动jar工作正常但通过crontab提供ClassFormatError

时间:2012-07-30 14:40:44

标签: java linux shell crontab shellexecute

通过shell脚本中的java -cp命令启动jar,例如:linux上的RunFileConverter.sh文件没有问题。但是,当我尝试通过'crontab -e'执行脚本时,它会给我一个ClassFormatError。

jar使用Java 6 jdk(最新版)在Win7上编译,而(redhat)linux服务器上的java版本也是JRE 6(1.6.0_29)。

文件的所有者是管道,crontab是通过同一用户启动的。

RunFileConverter.sh的内容:

java -cp /home/pipe/Custom/cbs/:/home/pipe/Custom/cbs/FileConverter.jar fileconverter.Launcher

文件结构(/ home / pipe / Custom / cbs /):     LIB / somelib.jar     FileConverter.jar     FileConverter.properties     RunFileConverter.sh     fileconverter.log

剥离了启动类文件:

package fileconverter;

import java.io.*;
import java.util.Locale;
import java.util.ResourceBundle;
import java.util.logging.FileHandler;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Launcher {

    // logger
    public final static Logger LOGGER = Logger.getLogger(FileConverter.LOGFILE);

    /**
     * Main class
     * @param args
     * @throws FileNotFoundException 
     */
    public static void main(String[] args) throws FileNotFoundException {

        // logger handlers, properties etc ...
        Handler fileHandler;
        // ...


        // create converters
        FileConverter requestConverter = new RequestFileConverter();
        FileConverter exportConverter = new ExportFileConverter();

        // start ya conversions, aarrr mate
        requestConverter.run();
        exportConverter.run();

    }
}

的crontab-E

*/5 * * * * /home/pipe/Custom/cbs/RunFileConverter.sh

我不知道错误是什么

1 个答案:

答案 0 :(得分:3)

很可能cron在路径中确实有java的不同(较旧)版本。

如果通过cron执行java -version会怎么说?