我使用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中执行代码,则代码执行得很好。 我不再有任何想法,你的帮助会很好!
答案 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将只是等待并且什么都不做,但过程已经开始。