2014-02-23 72 views
0

我有一個小程序,並從小程序在Windows上啓動一些進程。 當我從另一個代碼(測試)開始這個過程時,這段代碼工作正常,進程從rt.exec()運行到proc.destroy()。當我使用html調用applet - 進程每次只運行5秒(!!!),然後只是活着,但對proc.destroy()不起作用。這對我來說真的很有趣(小程序中的新手)。我想,這個問題是由AccessController引起的。請幫我解決這個問題(運行過程通常超過5秒鐘)!提前致謝。AccessController小程序問題

P.S.我使用Windows,中等Java安全手柄和小程序是自簽名的。它要求我'允許',小程序的作品。

下面的代碼:

public String startRecording(final String filename) throws IOException { 
    try { 
     return (String) AccessController 
       .doPrivileged(new PrivilegedAction<String>() { 
        public String run() { 
         try { 
          proc = Runtime 
            .getRuntime() 
            .exec(cmd + filename + "." + config.getFormat()); 
          //proc.waitFor(); 
          return "Ffmpeg process started"; 
         } catch (Exception e) { 
          // TODO Auto-generated catch block 
          return e.getMessage(); 
         } 
        } 
       }); 

    } catch (Exception e) { 
     return e.getMessage(); 
    } 
} 

而停止方法這裏

public void stopRecording() { 
    proc.destroy(); 
} 

編輯1: 這是FFmpeg的過程,它記錄桌面視頻,並將其寫入到文件,也許AccessController的塊訪問到文件系統。

+0

鑑於「文件名」可能是任何惡意的東西,看起來並不安全。/LiveConnect和小程序活動完成後五秒鐘停止嗎?聽起來像是PlugIn清理失控進程。因此,保持小程序運行(並確定文件名)。 –

+0

我瞭解文件名。我真的不知道是小程序運行,如何檢查它?過程還活着,但不起作用。 – user2171669

+0

如果我通過Windows命令提示符啓動進程,我的進程將保持運行狀態。這是瘋狂的,幫助我! – user2171669

回答

0

您需要處理I/O流。只是將錯誤(如果是ffmpeg)流重定向到文件。這解決了問題(但不知道爲什麼:))。