2012-07-30 81 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