Runtime.getruntime中没有打开notepad.exe的问题是什么?

当尝试执行包含以下代码的servlet时

Runtime rt = Runtime.getRuntime(); Process p = rt.exec("notepad.exe"); 

它不会在Windows Server 2003和Tomcat 5环境中启动应用程序,而是在Windows任务pipe理器中创build一个名为notepad.exe的进程。

在Windows XP和Tomcat 6环境下启动记事本

我需要在Windows Server 2003和Tomcat 5上工作

提前致谢

Solutions Collecting From Web of "Runtime.getruntime中没有打开notepad.exe的问题是什么?"

换句话说,它会在你的本地开发机器(WinXP + Tomcat6)上启动,而不是在生产/测试服务器(Win2K3 + Tomcat5)上启动。

您是否意识到Java Servlet代码在服务器机器上运行,而不是在客户端机器上运行,在现实世界中,通常是由网络连接的两台物理上不同的机器? 记事本在服务器机器(运行网络服务器(Tomcat)的地方)打开,而不是在客户端机器(运行网页浏览器的地方)打开。 它在本地开发环境中工作,只是因为webserver和webbrowser运行在同一台机器上。

登录到你的Win2K3环境,你会看到记事本在那里打开。


如果你真的打算在客户端机器上使用Runtime#exec()来启动notepad.exe (我没有看到任何的商业原因,但是除此之外),那么你需要为客户端提供一个Java应用程序由HTML / JSP页面提供的Applet或Web Start应用程序 。 这将被下载到客户端机器,并将在那里执行。

如果你能告诉我们启动notepad.exe的需求,那么我们可以给你一个解决方案/方法。

我认为你的tomcat作为后台服务运行。 当运行记事本时,它将与您的tomcat运行的相同的登录执行。 最有可能的是,这是一个不同的登录比你的桌面登录,因此记事本将不会显示在该桌面!

在你的开发环境中,你通过直接执行包装器脚本来启动tomcat。 尝试安装它作为一项服务,你会得到与XP相同的问题。

顺便说一句:我没有看到运行一个Appserver并在服务器上调用notpad 的一点 。 你真的确定这个设计吗?