当尝试执行包含以下代码的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
提前致谢
答案 0 :(得分:2)
换句话说,它是在本地开发机器(WinXP + Tomcat6)上启动的,而不是在生产/测试服务器(Win2K3 + Tomcat5)上启动的?
您是否意识到Java Servlet代码在服务器机器上运行,而不是在客户端机器上运行,这些机器在现实世界中通常是两个物理不同通过网络连接的机器?记事本在服务器计算机(运行Web服务器(Tomcat)的位置)打开,而不是在客户端计算机(运行webbrowser的位置)处打开。它在本地开发环境中工作只是因为webserver和webbrowser都在物理相同的机器上运行。
登录到您的Win2K3环境,您会看到记事本在那里打开。
如果您真的打算使用notepad.exe
在客户端计算机上启动Runtime#exec()
(我没有看到任何业务原因,但除此之外),那么您需要提供客户端由HTML / JSP页面提供服务的Applet或Web Start Application的Java应用程序。这将被下载到客户端计算机并将在那里执行。
答案 1 :(得分:1)
如果您可以告诉我们启动notepad.exe的要求,那么我们可以向您建议解决方案/方法。
答案 2 :(得分:0)
我认为你的tomcat在后台作为服务运行。运行记事本时,它将使用与tomcat运行时相同的登录执行。最有可能是与桌面登录不同的登录,因此记事本将不会显示在该桌面上!
在您的开发环境中,您通过直接执行包装脚本来启动tomcat。尝试将其作为服务安装,您将遇到与XP相同的问题。
顺便说一句:我没有看到运行AppServer并在服务器上调用notpad 。你真的对设计有把握吗?