Runtime.getRuntime().exec怪问题?
a2048 2010-12-19 04:36:23 用vb做了一个a.exe文件,目的是测试打开一个word文件后另存为一个word文件。
vb代码:
Private Sub Form_Load()
Dim docApp
Set docApp = CreateObject("Word.Application")
docApp.Visible = True
Set doc1 = docApp.Documents.Open("C:\试验.doc")
doc1.SaveAs "c:\成功.doc"
doc1.Close
Set doc1 = Nothing
docApp.Quit
Set docApp = Nothing
Unload Me
End Sub
用a.jsp调用
jsp代码:
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page language="java"
import="java.sql.*,java.net.URL,java.io.*,java.util.*,java.util.Properties"
%>
<%
java.lang.Process proc = Runtime.getRuntime().exec("c:\\a.exe");
Thread.currentThread().sleep(8000);
proc.destroy();
%>
上面的jsp代码是可以在C盘里另存为一个成功.doc文件的。但后来我把C:\试验.doc文件手工打开后没有关闭就执行了a.jsp程序,发现不能在c盘里另存为成功.doc文件了。然后我把试验.doc文件关闭后再执行a.jsp就不可以在C盘里另存为一个成功.doc文件了。但直接双击c:\a.exe是可以的。在运行里输入c:\a.exe也可以的。但就用a.jsp执行就不可以了,还有只要每执行一次a.jsp进程里就多一个winword.exe,现在我只能把C盘里的“试验.doc”文件名改成“试验1.doc”就又可以了。但只要我c盘里的试验1.doc文件先打开后再执行a.jsp就又和上面的现象一样了。这是为什么,怎么解决这个问题?
我在winxp和win2003 server上都出现这种现象,我用的是tomcat5.0