通過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