2015-04-02 56 views
0

我正在使用glassfish服務器來運行Java Web應用程序(在Windows 7 64位,jdk 1.7.0.67)。我正在嘗試從班上推出膩子。該過程被啓動(我可以看到它在Windows的任務管理器),但沒有膩子窗口正在打開......我喜歡嘗試不同的代碼:Java運行時:由窗口啓動的進程無法打開

Process p = Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL " + "C:\\putty.exe"); 

Process p = Runtime.getRuntime().exec("C:\\putty.exe"); 

Process p = Runtime.getRuntime().exec(cmd /c start C:\\putty.exe"); 

glassfish中的安全管理器已禁用。 putty.exe被標記爲以管理員身份執行。該方法與其他應用程序相同:cmd.exe或pspade.exe。如果我在應用程序啓動的cmd.exe中執行代碼,代碼將很好地執行。 我不知道,你的幫助會很好!

+0

對我來說你的代碼正在工作。把你的'putty.exe'放在任何其他驅動器中並檢查。 – Prashant 2015-04-02 09:14:35

+0

我把它放在D :,相同... – 2015-04-02 09:21:57

+0

另請參見[當Runtime.exec()不會](http://www.javaworld.com/article/2071275/core-java/when-runtime- exec --- won-t.html)提供了許多有關正確創建和處理過程的好建議。然後忽略它是指'exec'並使用'ProcessBuilder'來創建進程。此外,將參數'String'分解爲一個參數'String []',以便更可靠地解析路徑(其中包括).. – 2015-04-03 08:20:20

回答

0

編輯

不在這種情況下工作,但在其他情況下可能會有幫助。

嘗試增加:

try (BufferedReader reader = new BufferedReader(new inputStreamReader(process.getInputStream()));){    
    while (reader.readLine() != null){ 
     // consume the InputStream of the shell command 
    } catch (IOException e) { 
    //might throw an Exception if reader is not closed properly 
    } 

的EXEC()命令後。也許putty輸出一些東西給控制檯,當緩衝區滿時,Shell將停止執行程序。因此,如果InputStream沒有被正確使用,那麼shell將會等待並且什麼都不做,但是這個過程就開始了。

+0

使用此代碼,應用程序將停留在while循環中並且永不退出。但是沒有線被讀取。 – 2015-04-02 13:40:17

+0

很好,值得一試。它確實幫助我解壓縮例如。 – 2015-04-02 15:11:11

相關問題