Jacob在服务器上不能使用的解决方法

来源:互联网 发布:java正三角形面积计算 编辑:程序博客网 时间:2024/05/21 15:50

背景:
最近在用Ext制作一个ERP系统,其中需要用jacob实现对word的调用,但却发现我在本地用Myeclipse启动tomcat运行这个网站可以成功调用jacob,但在服务器上用tomact直接调用的时候,却发现不行。经过几天的摸索,终于发现了原因。在这里我用我探索的方式,总结一些网上有用的解决方法和我自己发现的一些问题。(主要提供一些解决问题的思路)

解决方法和思路如下:

  1. jacob.jar 和 jacob.dll不匹配
    这是最常见的错误,每个jacobh都有对应的不同系统的jacob.dll
    这里有这个的下载地址:(jacob1.18)
    https://sourceforge.net/projects/jacob-project/
  2. 报错:Can’t load IA 32-bit .dll on a AMD 64-bit platform
    出现这个报错是因为使用的jacob.dll和系统不匹配,把32位的用在了64位的系统上了,几位的系统就用几位jacob.dll。
  3. 报错:(中午翻译)不能找到相应的jacob.dll。
    这有两个原因
    (1)jacob.jar 和 jacob.dll不匹配,这就参考1,去官网下个最新的,这东西开源。
    (2)jacob.dll的位置没放对。
    若使用tomcat,那就找到tomact使用的jdk,然后把dll放在jdk/jre/bin里。相应的jacob.jar放在jdk/jre/lib/ext里。
    最好在tomcat7.0/lib里也放一个相应的jar,其他地方就不要放了,放多了不好,可能会起不来。要是放到了不知道在哪,就文件搜索下,把多余的删了。少了能很好的确保使用一致。
    上面是报错的的一些情况,下面是不报错的情况

  4. 可能是程序错
    我用了word的替换功能,但却不能使用,也没报错,后来发下是因为自定义方法写错,就是在把时间格式转换成String的时候没有判断为空。代码如下,就是原来没写if

    public static String dToS_YMD(Date date1)    {        String s;        if(date1 == null)        {            s = "    年  月  日";        }        else        {            SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日");              s=sdf.format(date1);         }        return s;    }

5.没有相应的系统文件

 如果你是64位操作系统 请在C:\Windows\SysWOW64\config\systemprofile\目录下新建一个Desktop的文件夹 如果是32位操作系统 请在C:\Windows\System32\config\systemprofile\目录下新建一个Desktop的文件夹

6.做下配置
首先打开任务管理器,结束Excel.exe*32的进程,停止你的tomcat服务,
然后32位运行”dcomcnfg”,64位运行 mmc comexp.msc /32 。
接着在新打开的窗口里,依次展开:“控制台根节点”–>“组件服务”–>”计算机”–>“我的电脑”–>”DCOM配置”,在里面找到一个名为”Microsoft Excel Application”(这拿excel做例子,其他的也相似)的节点右键单击该节点,选属性 ,切换到标识选项卡,改为“交互式用户”,最后点击确定完成。

7.要还是不行,看看需要操作文件路径
jacob进行操作的文件路径上的文件夹名字中不能有空格,要不想改文件,或者保存地方,可以把文件建立在没有空格的文件路径下,然后不用保存,而是另存为到有空格的路线的路径下。

1 0
原创粉丝点击