服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

jacob配置方法及两个常见错误解决


  通过jacob可以很方便的通过编程操作word等ms组件,以前我也写过一篇关于如何使用jacob进行将word文档转为html和其他格式的文档(http://blog.csdn.net/guoxiaoshou2000/archive/2004/12/07/208024.aspx);而且附上了源码。
  
  但是最近有些朋友跟我联系,说无法正确执行我提供的代码,提示的错误如下:
  
  com.jacob.com.comfailexception: invoke failed: documents at com.jacob.com.dispatch.invokev(native method) at
  
  com.jacob.activex.activexcomponent.getproperty(activexcomponent.java) at wordtohtml.change(wordtohtml.java:62)
  
  at wordtohtml.main(wordtohtml.java:104)
  
  com.jacob.com.comfailexception: invoke failed: quit
  
  at com.jacob.com.dispatch.invokev(native method)
  
  at com.jacob.activex.activexcomponent.invoke(activexcomponent.java) at wordtohtml.change(wordtohtml.java:77) at wordtohtml.main(wordtohtml.java:104)
  
  exception in thread "main"
  
  这个错误以前我也碰到过,在这里跟将我的解决方法说明一下。
  
  造成这种错误的一种原因是jdk与你的jacob版本不相符合,如果使用jacob1.6而使用jdk1.4或以上版本,那么肯定会出这种错误,解决方法可以升级你的jacob.dll版本――这个在yahoo的jacob讨论组上面可以有下载文件名称是:jacob_jre142fix_bin.
  
  另外注意的是,这样升级后仍然可能出错,这样的话,建议采用下面的配置方法。
  
  jdk1.3.1_15 + jacob.jar 1.7 + jacob.dll的jacob_jre142fix_bin版本
  
  其中jdk可以直接从sun的网站下载,下载链接为:
  
  http://192.18.97.50/ecom/ecomticketservlet/beginbb924c3a202206be2fd20bebe583f482/-2147483648/829060395/1/557666/557654/829060395/2ts+/westcoastfsend/j2sdk-1.3.1_15-oth-jpr/j2sdk-1.3.1_15-oth-jpr:7/j2sdk-1_3_1_15-windows-i586.exe
  
  注意,下载完毕以后是一个文件名称很长的文件,将其改名为jdk1.3.1_15.exe即可。
  
  jacob.jar 1.7的下载地址如下:
  
  http://danadler.com/jacob/jacobsrc_17.zip
  
  注意,不要使用它里面提供的jacob.dll.
  
  jacob.dll可从yahoo的jacob讨论组下载(呵呵,给它做广告了)。
  
  下载完毕所有的文件以后,将jacob.jar解压然后将com和meta-inf中的文件分别添加到jdk的lib中的tools.jar中的对应文件夹中(如果不想要这样,通过环境变量设置也可以,但是尝容易出错),而jacob.dll则可以直接放到system32中即可。
  
  这里还要注意一点,如果你的jacob.jar和jacob.dll的版本不一致的话,很可能出现下面的错误:
  
  exception in thread "main" java.lang.unsatisfiedlinkerror: no jacob in java.libr
  
  ary.path
  
  at java.lang.classloader.loadlibrary(classloader.java:1344)
  
  at java.lang.runtime.loadlibrary0(runtime.java:744)
  
  at java.lang.system.loadlibrary(system.java:815)
  
  at com.jacob.com.dispatch.<;clinit>(dispatch.java)
  
  at openword.open(openword.java:12)
  
  at openword.main(openword.java:48)
  
  或者:
  
  exception in thread "main" java.lang.unsatisfiedlinkerror: docoinitialize at com.jacob.com.comthread.docoinitialize(native method)
  
  at com.jacob.com.comthread.init(comthread.java)
  
  at com.jacob.com.comthread.initmta(comthread.java)
  
  at com.jacob.com.rot.addobject(rot.java)
  
  at com.jacob.com.jacobobject.<;init>(jacobobject.java)
  
  at com.jacob.com.dispatch.<;init>(dispatch.java)
  
  at com.jacob.activex.activexcomponent.<;init>(activexcomponent.java)
  
  at openword.open(openword.java:12)
  
  at openword.main(openword.java:48)

扫描关注微信公众号