通过shell脚本中的java -cp命令启动jar例如:Linux上的RunFileConverter.sh文件工作没有问题。但是,当我尝试通过'crontab -e'执行脚本时,它给了我一个ClassFormatError。通过sh脚本启动jar通常工作,但通过crontab给出ClassFormatError
罐子编译Win7上使用Java JDK 6(最新)和(红帽)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
Filestructure(/家/管材/自定义/ 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
我不知道是什么错误可能是
当你在耳机的代码就是问题所在。 :) – Nishant 2012-07-30 14:44:43
启动“Java的版本”从crontab中,并确保它使用JRE 6了。你可能把整个路径放到java二进制文件中。也许你有5个somwhere和crontab正在选择它。这可能也是一个权限问题 - ClassFormatError表明类文件不可读。 – 2012-07-30 14:50:06
Jep,也是由crontab拾取的不同版本!一个thx你也:) – Jeankes 2012-07-30 15:04:35