在我们的 Web 应用程序中,我们正在使用 Process myProcess = Runtime.getRuntime.exec(cmd)。它目前使用托管在 Ubuntu Linux 上的 Tomcat 进行部署。
这个应用程序在我的开发机器上运行良好(Core2 duo ,2GB RAM OS:UBUNTU 11.04)。
但是,当我在虚拟服务器(1GB RAM,Xeon 处理器)上托管相同内容时,Runtime.getRuntime.exec(cmd) 调用失败。它无法创建子进程。
创建了相同的子流程,我们在我的开发机器上得到了预期的输出。
在应用程序中,我们调用部署在 tomcat 中的 servlet 中的 java 类执行良好,输出也很好。下面是相同的代码片段。
from the servlet
uploadservlet.java
+-----------+
CalculateDuration dur=new CalculateDuration();
Map<String, Integer> durationmap=dur.conversion(al);
+-------------+
Caclulateduration.java
+------------------+
{
conversion(ArrayList<String> b)
{
StringBuilder sb = new StringBuilder();
sb.append( "hello.o"); /* Name of the sample executable */
...
Process p = Runtime.getRuntime().exec(sb.toString() ); //struck at this line.subprocess not created on my vps system
...
+------------------+
独立 Caclulated.java 在虚拟服务器上运行。
这个问题可能是因为虚拟服务器上的物理内存不足(导致 getRunTime 失败)还是我在这里遗漏了一些东西。任何工具、命令或方法都可以根除此问题。
感谢您的意见!