2012-07-30 51 views
0

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

我不知道是什麼錯誤可能是

+0

當你在耳機的代碼就是問題所在。 :) – Nishant 2012-07-30 14:44:43

+0

啓動「Java的版本」從crontab中,並確保它使用JRE 6了。你可能把整個路徑放到java二進制文件中。也許你有5個somwhere和crontab正在選擇它。這可能也是一個權限問題 - ClassFormatError表明類文件不可讀。 – 2012-07-30 14:50:06

+0

Jep,也是由crontab拾取的不同版本!一個thx你也:) – Jeankes 2012-07-30 15:04:35

回答

3

最有可能的cron確實有java路徑不同的(舊的)版本。

如果您通過cron執行java -version是什麼說的?

+0

1.4.2! Grrrr ....嗯,我在這裏學到了一些新東西:) thx! – Jeankes 2012-07-30 15:03:46