关于做ceb转换cebx遇到的问题及解决方案总结
ceb在手機端無法查看,于是老總讓我做一個ceb轉換cebx的功能,嵌入到附件上傳的過程中。然后在任務的過程中遇到了幾個問題,糾結了好幾天,四天就走了三行代碼,太令我印象深刻了。今天在這里給大家分享下,希望有遇到同樣問題的同志有所幫助。
問題主要出現在:ActiveXComponent ax = new ActiveXComponent("MakerCom.MakerExt");
????????????????????????????? ?Object apabi = ax.getObject();
????????????????????????????? ?Variant result = Dispatch.call(apabi, "BeginMaker", new Variant(""));
先后報了兩個錯:1.automation 服務器不能創建對象
????????????????????????????????2.java.lang.NoSuchMethodError: com.jacob.activeX.ActiveXComponent.getObject()
解決方案:1.首先我也百度了各種解決方法,包括regsvr32?scrrun.dll,安全模式設置成“中”,如果javascript腳本中報這個錯誤,還應將IE的安全設置“不允許運行未標記為安全的activeX控件”啟用,regsvr32?msxml3.dll等等。可是依舊沒解決“automation 服務器不能創建對象”這個錯誤,后來在無意之間才發現根本原因,在對注冊表查案的時候,發現注冊的dll文件路徑是亂碼,所以原因就是在注冊dll時路徑中帶了中文,然后我重新注冊dll,第一個問題也就解決了。(總結:由于帶有中文路徑的dll注冊頁可以注冊成功,在注冊dll一定要去掉中文路徑)
2.接著就出現第二個問題了,前提我也已經引入jacob.dll,jacob.jar對應的路徑下,后來經過百度知道jacob與jdk版本(我的是jdk1.6)有關,不同的jdk要對應的jacob,然后我在網上下載七八個版本,最后在jacob1.9版本能夠getObject了,但是報錯沒有對應的call方法,原因是1.9版本的jacob.jar包中Dispatch.call(Dispatch, String, new Variant(""));而我寫的Dispatch.call(apabi, "BeginMaker", new Variant(""));中的apabi是Object類型的。但是我改了Dispatch? apabi = ax.getObject();后又報第二個錯誤。所以我又重新找了jacob.jar包(其中Dispatch.call(Object, String, new Variant(""));符合我代碼調用),然后問題就解決了。(總結:jacob.dll版本要對應環境的jdk版本,Object apabi = ax.getObject();和Dispatch.call(apabi, "BeginMaker", new Variant(""));要對應jacob.jar包的方法,有可能你的jacob的getObject()返回類型是Dispatch?)
總結
以上是生活随笔為你收集整理的关于做ceb转换cebx遇到的问题及解决方案总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 免费开源PDF复制格式整理神器
- 下一篇: C语言通讯录管理系统开发