通过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
我不知道错误是什么
答案 0 :(得分:3)
很可能cron在路径中确实有java
的不同(较旧)版本。
如果通过cron执行java -version
会怎么说?