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

时间:2010-05-12 02:07:21

标签: java windows

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

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

它不会在环境Windows Server 2003和Tomcat 5中启动该应用程序 但是正在Windows任务管理器中创建一个名为notepad.exe的进程。

在windows xp和tomcat 6环境中启动记事本

我需要处理Windows Server 2003和tomcat 5

提前致谢

3 个答案:

答案 0 :(得分:2)

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

您是否意识到Java Servlet代码在服务器机器上运行,而不是在客户端机器上运行,这些机器在现实世界中通常是两个物理不同通过网络连接的机器?记事本在服务器计算机(运行Web服务器(Tomcat)的位置)打开,而不是在客户端计算机(运行webbrowser的位置)处打开。它在本地开发环境中工作只是因为webserver和webbrowser都在物理相同的机器上运行。

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


如果您真的打算使用notepad.exe在客户端计算机上启动Runtime#exec()(我没有看到任何业务原因,但除此之外),那么您需要提供客户端由HTML / JSP页面提供服务的AppletWeb Start Application的Java应用程序。这将被下载到客户端计算机并将在那里执行。

答案 1 :(得分:1)

如果您可以告诉我们启动notepad.exe的要求,那么我们可以向您建议解决方案/方法。

答案 2 :(得分:0)

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

在您的开发环境中,您通过直接执行包装脚本来启动tomcat。尝试将其作为服务安装,您将遇到与XP相同的问题。

顺便说一句:我没有看到运行AppServer并在服务器上调用notpad 。你真的对设计有把握吗?