Java Runtime:窗口启动的进程无法打开

时间:2015-04-02 08:53:27

标签: java glassfish runtime.exec

我使用glassfish服务器运行java Web应用程序(在Windows 7 64bits,jdk 1.7.0.67上)。我试图从课堂上推出腻子。这个过程启动了(我可以在windows的任务管理器中看到它)但是没有putty窗口打开...我尝试了不同的代码:

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中执行代码,则代码执行得很好。 我不再有任何想法,你的帮助会很好!

1 个答案:

答案 0 :(得分: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将只是等待并且什么都不做,但过程已经开始。