2015-04-02 58 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

相关问题