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
...全文
275 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
dracularking 2011-01-28
  • 打赏
  • 举报
回复
有个问题,直接双击a.exe是可以的是在什么前提下的
貌似是打开后再运行是阻断在VB的open那一句了吧 这个可以通过试验确认的 用不着在这里猜
qybao 2011-01-28
  • 打赏
  • 举报
回复
是不是proc没来得及执行就被destroy了
proc.waitFor()试试看,然后开一个线程打印proc.getErrorStream或proc.getOutputStream,看看有些什么提示,查看一下proc.exitValue
a2048 2011-01-28
  • 打赏
  • 举报
回复
这个问题已经拖了好久了,今天准备结贴了,希望高手们再解答一下啊。
a2048 2011-01-24
  • 打赏
  • 举报
回复
快春节了,这个问题还没有解决。有哪位高手来解答一下啊!
a2048 2011-01-18
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 zn85600301 的回复:]
应该是你jsp 只是关掉了这个文档 但是没有关掉word的进程
以前好像听人说起 execle也是这样的问题
[/Quote]
jsp代码就这么简单。应该没有问题吧。大家有时间试试啊!
zn85600301 2010-12-28
  • 打赏
  • 举报
回复
应该是你jsp 只是关掉了这个文档 但是没有关掉word的进程
以前好像听人说起 execle也是这样的问题
a2048 2010-12-28
  • 打赏
  • 举报
回复
这个贴沉了好久了,看看还有谁能帮忙解答一下。
cheniqit1 2010-12-23
  • 打赏
  • 举报
回复
从 我只能把C盘里的“试验.doc”文件名改成“试验1.doc”就又可以了 这里分析。
lz 可以从这里入手 为什么
a2048 2010-12-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 whut_lcy 的回复:]
执行JSP之前先强制kill掉原来的doc
[/Quote]
你说的没有用,我已经把电脑重启也这样。
a2048 2010-12-21
  • 打赏
  • 举报
回复
求高手出手。如果你没有vb环境我可以把编译好a.exe的发给你来测试。
whut_lcy 2010-12-21
  • 打赏
  • 举报
回复
执行JSP之前先强制kill掉原来的doc
a2048 2010-12-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 theforever 的回复:]
在TOMCAT里把应用停了,然后清空一下TOMCAT的缓存目录,再启动应用试下。
[/Quote]
这种方法我早就试过不行。换过几台电脑也不行。
你说的TOMCAT的缓存目录是Tomcat 5.0\work下吗。
numb09 2010-12-20
  • 打赏
  • 举报
回复
a2048 2010-12-20
  • 打赏
  • 举报
回复
那位能帮我解答一下啊!
  • 打赏
  • 举报
回复
在TOMCAT里把应用停了,然后清空一下TOMCAT的缓存目录,再启动应用试下。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧