开始在本地提示没有相应版本的jacob.jar和相应版本的.dll文件,通过我上一期博客解决了,并提供了资源,之后将项目部署到服务器端的tomcat中,使用tomcat启动,遇到了一些问题。
1.提示不能在32位的平台上加载64位的.dll文件,也就是版本不匹配。
我是将32位、64位都下载了,并且都放进了C盘windows中的sys32和sys64中,提示这个错误后我将sys64中的32位和64位的.dll文件去掉,重新运行发现这个问题解决了。
2.tomcat启动框不提示错误,但是页面点击导出word就卡主。
调试页面发现报找不到处理导出word的该方法,这时我就很纳闷,本地测试这方法完全可以找到,并且我还在本地的tomcat上放入项目war进行测试,发现也能访问到,说明不是程序和插件的问题,在网上搜了各个方面的问题,发现了一个有可能的不同。我在服务器端的tomcat日志里面进行查找信息,发现了一个问题,但是并没有在tomcat启动框中没有体现。进入到tomcat的安装目录中的logs目录中。如下图。
tomcat每次启动时,自动在logs目录下生产以下日志文件,按照日期自动备份。可以帮助我们更好的找出错误。
tomcat logs下各日志文件的含义,详细可以参考这篇博客
在你遇到问题的那一天的日志文件中查看相关日志,我在localhost日志文件中找到了有用的信息,
一般在这几个日志文件中查找你所需要的信息:
localhost.日期.log:这个类似于第一种日志,可是信息没有第一种全;
localhost_access_log.日期.txt:这个是存放访问tomcat的请求的所有地址以及请求的路径、时间,请求协议以及返回码等信息(重要);
tomcat7-stderr.日期.log:这个是log4j的错误日志,因此在程序中要合理的捕捉异常;
tomcat7-stdout.日期.log:(类似于eclipse的控制台的信息)这个是程序中的System语句打印的日志(包括系统抛出的异常),也终于明白了为什么一再强调不能用打印语句进行系统调试。
我在localhost日志文件中找到重复提示的一种错误:
com.jacob.com.ComFailException: Can't get object clsid from progid
这个错误
- 有的说是原因是:regsvr32 ***.ocx命令进行注册后 ,获取的progid有误;
- 有的说是注册表中word或excel注册信息不为Word.Applocation和Eexcl.Aapplcation或者 ActiveXComponent app = new ActiveXComponent("Excel.Application");中Excel.Application写错了。同样出现上述问题;
- 还有的说是没有装word;
我一想,本地和服务器的差别,环境装的都是一样,就是没有装word,便找了个word2013版本的office word装上,发现问题就解决了,这个问题可以折腾了我两天,希望能帮得到你吧,加油!