Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java runtime.getruntime().exec(“wscript.exe macro.vbs”)不';无法在windows server 2008上工作_Java_Tomcat_Runtime_Exec - Fatal编程技术网

Java runtime.getruntime().exec(“wscript.exe macro.vbs”)不';无法在windows server 2008上工作

Java runtime.getruntime().exec(“wscript.exe macro.vbs”)不';无法在windows server 2008上工作,java,tomcat,runtime,exec,Java,Tomcat,Runtime,Exec,我在windows server 2008的tomcat 7中部署了一个服务器上的web应用程序。 此web应用程序正在运行以下代码行: String path = req.getServletContext().getRealPath("/") + "WEB-INF/vbs/macro.vbs"; int range = 1; int range1 = 1; int status = Runtime.getRuntime().exec("wscript.exe" + path + ""

我在windows server 2008的tomcat 7中部署了一个服务器上的web应用程序。 此web应用程序正在运行以下代码行:

String path = req.getServletContext().getRealPath("/") + "WEB-INF/vbs/macro.vbs"; 
int range = 1; 
int range1 = 1; 
int status = Runtime.getRuntime().exec("wscript.exe" + path + "" + range + "" + range1 + "" + temp.getAbsolutePath() + "" + temp1.getAbsolutePath()).waitFor();
在本地计算机上,执行完全成功。相反,部署到服务器时,应用程序将在exec运行时停止,浏览器将等待响应。
原因可能是什么?

我知道这是一个非常古老的问题,但如果有人有类似的问题,仍然值得回答

使用
Runtime.getRuntime().exec()
执行外部程序非常好,但在本例中,参数之间没有空格,这意味着要执行的命令是
wscript.exe/WEB-INF/vbs/macro.vbs11…
而不是
wscript.exe/WEB-INF/vbs/macro.vbs 1…

Runtime.getRuntime().exec(String)
方法自动将字符串按空格分割,因此另一个潜在问题是命令字符串中的参数可能需要用引号括起来,以防止应用程序错误地解析它们

正确的代码应该是:

int status = Runtime.getRuntime().exec(
   "wscript.exe \"" + path + "\" " + range + " " + range1 + "\" " + 
   temp.getAbsolutePath() + "\" " + temp1.getAbsolutePath() + "\"")
.waitFor();
它在某些服务器上工作,但在其他服务器上不工作,这一事实很可能与部署这些文件的路径有关,这些文件中有或没有空间(例如“C:\Program files”)