当前位置: 代码迷 >> Java Web开发 >> java 调用一条linux命令出错了,大家来看看究竟怎么调用
  详细解决方案

java 调用一条linux命令出错了,大家来看看究竟怎么调用

热度:65   发布时间:2016-04-16 22:10:00.0
java 调用一条linux命令出错了,大家来看看究竟如何调用

命令如下:
pdf2swf -o /data/bjtf/attachment/2014/07/09/2014.swf -T -z -t -f /data/bjtf/attachment/2014/07/09/2014.pdf -s languagedir=/usr/local/swftools/bin/xpdf-chinese-simplified -s flashversion=9

一条将pdf文件转换成swf文件的命令,我把这条命令直接在linux下输出之后,命令是执行的,问题就出在java调的时候,执行不成功,
我不知道java调用linux

Process p = r.exec(new String[]{"pdf2swf"," -o ",“/data/bjtf/attachment/2014/07/09/2014.swf” ," -T -z -t -f ",“/data/bjtf/attachment/2014/07/09/2014.pdf”," -s ","languagedir=","/usr/local/swftools/bin/xpdf-chinese-simplified"," -s ","flashversion=9"});

说实话,我也不知道到底是如何执行的,我从网上搜了一下,说调的命令要分开写,放在数组里,所以我就把这条命令随便拆开,没有任何依据的拆开,就放进数组了,我这种放法肯定有问题,因为我不知道应该怎么写才好,所以跟大家一起来探讨一下,像这种命令如何调呢?

------解决方案--------------------
既然 terminal 可以成功执行,启动 shell,然后自定义命令行作为参数传递给 shell 解释器。shell 知道如何将程序员的意图转达给底层。使用 sh -c,将自定义 CMD 行作为其参数,最后使用 java.lang.Runtimeexec(String[] cmdarray):
String raw2flvCmd = "/usr/local/ffmpeg/bin/ffmpeg -i \"某视频文件下载URL\" -f flv /usr/userfile/ffmpeg/tempfile/1.flv";  
Runtime.getRuntime().exec(new String[]{"sh","-c",raw2flvCmd});  
  相关解决方案