tomcat作为服务启动和开启startup.bat运行,程序运行结果不一样!
我最近做了一个项目,其中用到了Jacob这个包将Word文档转换为html,但是用此包进行转换需要在jdk的bin目录下加入jacob-1.18-M2-x64.dll(64位)或jacob-1.18-M2-x86.dll(32位)这两个文件,我使用MyEclipse将tomcat启动或者直接启动startup.bat程序都可以正常运行,Word也能够正常转换为html。但是这样每次启动tomcat都很不方便,所以我使用service.bat install 命令将tomcat作为服务,这样就可以设置成开机自动启动,这样一开机就可以用了,通过服务启动的tomcat确实可以正常运行,但是!唯独Word转换为html这个块出了问题!无法转换!但是我查看进程,每次运行Word转html都会新建一个叫做“WINWORD.EXE”的进程。这个实在令我诧异!为什么通过服务启动就不能使用Jacob了呢!然后我在我同学的电脑上也试了一下,跟我情况一样。(我和我同学电脑系统都是win7的)。然后我又用公司的两台xp电脑配了一次,用服务启动,Word都能正常转为html!!难道跟系统有关???这个我就有点不理解了。通过服务启动tomcat和使用startu.bat启动到底有什么区别,或者如果是系统问题,win7和xp在处理这个问题方面又有什么不一样呢??求大神帮忙解决啊!下面是Word转html的相关代码:
// 启动word应用程序(Microsoft Office Word 2003)
ActiveXComponent app = new ActiveXComponent("Word.Application");
System.out.println("*****正在转换...*****");
try
{
// 设置word应用程序不可见
app.setProperty("Visible", new Variant(false));
// documents表示word程序的所有文档窗口,(word是多文档应用程序)
Dispatch docs = app.getProperty("Documents").toDispatch();
// 打开要转换的word文件
Dispatch doc = Dispatch.invoke(
docs,
"Open",
Dispatch.Method,
new Object[] { docfile, new Variant(false),
new Variant(true) }, new int[1]).toDispatch();
// 作为html格式保存到临时文件
Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] {
htmlfile, new Variant(WORD_HTML) }, new int[1]);
// 关闭word文件
Dispatch.call(doc, "Close", new Variant(false));
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
//关闭word应用程序
app.invoke("Quit", new Variant[] {});
}
System.out.println("*****转换完毕********");
}