通过 shell 脚本中的 java -cp 命令启动 jar,例如:Linux 上的 RunFileConverter.sh 文件没有问题。但是,当我尝试通过“crontab -e”执行脚本时,它给了我一个 ClassFormatError。
该 jar 是在 Win7 上使用 Java 6 jdk(最新)编译的,(redhat)linux 服务器上的 java 版本也是 JRE 6(1.6.0_29)。
文件的所有者是 pipe,并且 crontab 是通过同一用户启动的。
RunFileConverter.sh 的内容:
java -cp /home/pipe/Custom/cbs/:/home/pipe/Custom/cbs/FileConverter.jar fileconverter.Launcher
文件结构(/home/pipe/Custom/cbs/): 库/somelib.jar 文件转换器.jar 文件转换器.properties RunFileConverter.sh 文件转换器.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();
}
}
定时任务
*/5 * * * * /home/pipe/Custom/cbs/RunFileConverter.sh
我不知道错误是什么
最佳答案
很可能 cron 在路径中确实有不同(旧)版本的 java
。
如果你通过 cron 执行 java -version
会说什么?
关于java - 通过 sh 脚本启动 jar 工作正常,但通过 crontab 给出 ClassFormatError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11723764/