2014-07-16 95 views
0

我試圖運行cmd命令。一切正常,但沒有輸出。我不明白爲什麼。 更新的代碼cmd命令不能在java程序中運行

import java.io.*; 
import java.util.*; 

class CmdTest { 
    public static void main(String[] args) throws Exception { 
     String command= "ffmpeg -i D:\\test%d.jpg -vcodec mpeg4 outfile.avi"; 
     Process process; 
     System.out.println("first stmt"); 
     try 
     { 
      process = Runtime.getRuntime().exec(command); 
      Scanner kb = new Scanner(process.getInputStream()); 
      System.out.println("try block"); 
     } catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 
     System.out.println("last stmt"); 
    } 
} 

我期待上述cmd命令的執行。編譯和執行過程中沒有任何問題。但是,命令不執行寫入。

+0

你期待什麼輸出...? –

+0

請更具體 - 什麼不按預期工作?應該發生什麼? – radar

+1

嘗試添加'process.waitFor();'也從錯誤流中讀取。 –

回答

0

首先,你的代碼應該給錯誤的原因是行Scanner kb = new Scanner(process.getInputStream());不會看到過程。 processtry-catch內定義。

其次,你有沒有試過command windowffmpeg -i D:\\test%d.jpg -vcodec mpeg4 outfile.avi?如果沒有,嘗試一下。 /停止

三的,而不是運行該命令嘗試運行像dir一些簡單的命令,pwd

四,把一些System.out.println("say something")裏面的代碼,那麼你就可以看到它失敗。

+0

第一,索裏,但其並沒有給出任何錯誤,先生 第二,我已經試過在cmd中它的做工精細 第三的代碼,我已經試過他們,他們正在工作的罰款 第四。我有根據你的sugesstion更新代碼,但nthing會正確...... –

+0

我複製並運行你的代碼,它打印出'第一個stmt \ n嘗試塊\ n最後stmt'。如果您正在打印輸出,那麼問題與'ffmpeg'命令有關。 – smttsp

+0

試試這個,'command = cmd.exe/C start ffmpeg -i D:\\ test%d.jpg -vcodec mpeg4 outfile.avi;'。我有一個工作'ffmpeg'命令,我試了一下,它的工作。當你說'cmd.exe/C start'時,java打開一個'cmd'並在命令窗口中運行你的命令。 – smttsp