您的位置:首页 > 运维架构 > Tomcat

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

2016-08-01 21:16 302 查看
背景:

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

解决方法和思路如下:

jacob.jar 和 jacob.dll不匹配

这是最常见的错误,每个jacobh都有对应的不同系统的jacob.dll

这里有这个的下载地址:(jacob1.18)

https://sourceforge.net/projects/jacob-project/

报错:Can’t load IA 32-bit .dll on a AMD 64-bit platform

出现这个报错是因为使用的jacob.dll和系统不匹配,把32位的用在了64位的系统上了,几位的系统就用几位jacob.dll。

报错:(中午翻译)不能找到相应的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,其他地方就不要放了,放多了不好,可能会起不来。要是放到了不知道在哪,就文件搜索下,把多余的删了。少了能很好的确保使用一致。

上面是报错的的一些情况,下面是不报错的情况

可能是程序错

我用了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进行操作的文件路径上的文件夹名字中不能有空格,要不想改文件,或者保存地方,可以把文件建立在没有空格的文件路径下,然后不用保存,而是另存为到有空格的路线的路径下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息