最近做一个系统的维护改善工作,从来没接触过的业务,代码中没有一句注释。各种bug堆积转狂。
一条改到导出word的功能的时候,系统使用了jacob操作但是系统一直报错,
Exception in thread "main" java.lang.UnsatisfiedLinkError: no jacob in java.library.path
查了下资料 ,基本都是说没正确的放入library中,并提供了3处以上的位置,实际测试后只要放在\Java\jdk1.6.0_32\jre\bin下就可以了。
重新配置了myeclipse的jre
选择了tomcat的jdk
重新启动后发现系统仍然报着个错误,考虑我用的是win7 64位 安装的是64位的jdk,重新下载了一个32位的安装了一下,仍然用jacob-1.17-M2-x86.dll 。依据报如上的错误。
于是我将dll重新命名成jacob.dll运行在系统中。
系统报错java.lang.UnsatisfiedLinkError: com.jacob.com.Dispatch.createInstance(Ljava/lang/String;)V
我查了一下大体上是说jar和dll的版本存在冲突,我调试了用最新的版本仍然存在这个问题。
于是怀疑是自己的项目有问题,但是也没有找到什么疑问点。就重新写了一个新项目,只将jacob和测试代码部署上,成功的运行了项目。突然明白了一定是jar包中存在什么冲突。
打开lib 各种版本的jar包堆积如山。主要是怀疑和导出有关的jar包,这个项目中可以说是把所有能找到的有关word操作的jar包都找齐了,一个个排除最终定位到了java2word.jar上,解压开一看里边包含着jacob
看来问题是出在这个位置上了。java2word是com桥jacob包的封装,它专门针对word文档的操作做了封装,
java2word在系统中可能是被用来将word转成pdf格式文档了。
直接纠结了。
来源:oschina
链接:https://my.oschina.net/u/105372/blog/60041