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
5.没有相应的系统文件
6.做下配置
首先打开任务管理器,结束Excel.exe*32的进程,停止你的tomcat服务,
然后32位运行”dcomcnfg”,64位运行 mmc comexp.msc /32 。
接着在新打开的窗口里,依次展开:“控制台根节点”–>“组件服务”–>”计算机”–>“我的电脑”–>”DCOM配置”,在里面找到一个名为”Microsoft Excel Application”(这拿excel做例子,其他的也相似)的节点右键单击该节点,选属性 ,切换到标识选项卡,改为“交互式用户”,最后点击确定完成。
7.要还是不行,看看需要操作文件路径
jacob进行操作的文件路径上的文件夹名字中不能有空格,要不想改文件,或者保存地方,可以把文件建立在没有空格的文件路径下,然后不用保存,而是另存为到有空格的路线的路径下。
最近在用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进行操作的文件路径上的文件夹名字中不能有空格,要不想改文件,或者保存地方,可以把文件建立在没有空格的文件路径下,然后不用保存,而是另存为到有空格的路线的路径下。
相关文章推荐
- 同一台服务器上,安装OC4J之后Oracle数据库不能使用,解决方法
- 打开页面时出现"Automation 服务器不能创建对象"问题的解决方法
- Oracle服务器更改了名字,不能启动的解决方法
- 解决IE在客户端使用ADODB.Stream不能创建对象成功的方法
- Lenovo F41 使用WinXP不能全屏看Flash格式的电影的解决方法
- 任务管理器不能使用解决方法
- 解决DotNetNuke3.0.8菜单不能使用中文的方法
- VS2005编写aspx,设计 不能使用的解决方法
- 系统报告“automation服务器不能创建对象"解决方法
- Lenovo F41 使用WinXP不能全屏看Flash格式的电影的解决方法
- "Automation 服务器不能创建对象" 的解决方法
- WinXP SP2 IE不能使用cookie的解决方法
- "Automation 服务器不能创建对象"的解决方法
- net"automation服务器不能创建对象 "的解决方法
- 不能使用XP的“帮助和支持”解决方法
- 使用indy9不能发送邮件的解决方法
- 上网的时候出现 "Automation 服务器不能创建对象" 的解决方法
- Visual Studio.Net中"automation服务器不能创建对象"的解决方法
- 在AJAX.NET中使用FCKEditor不能读取FCKEditor内容的解决方法
- 服务器关于flash导入视频不能播放的解决方法!