服務器端使用jacob.jar進行導出word提示相關錯誤

開始在本地提示沒有相應版本的jacob.jar和相應版本的.dll文件,通過我上一期博客解決了,並提供了資源,之後將項目部署到服務器端的tomcat中,使用tomcat啓動,遇到了一些問題。

1.提示不能在32位的平臺上加載64位的.dll文件,也就是版本不匹配。

我是將32位、64位都下載了,並且都放進了C盤windows中的sys32和sys64中,提示這個錯誤後我將sys64中的32位和64位的.dll文件去掉,重新運行發現這個問題解決了。

2.tomcat啓動框不提示錯誤,但是頁面點擊導出word就卡主。

調試頁面發現報找不到處理導出word的該方法,這時我就很納悶,本地測試這方法完全可以找到,並且我還在本地的tomcat上放入項目war進行測試,發現也能訪問到,說明不是程序和插件的問題,在網上搜了各個方面的問題,發現了一個有可能的不同。我在服務器端的tomcat日誌裏面進行查找信息,發現了一個問題,但是並沒有在tomcat啓動框中沒有體現。進入到tomcat的安裝目錄中的logs目錄中。如下圖。

tomcat每次啓動時,自動在logs目錄下生產以下日誌文件,按照日期自動備份。可以幫助我們更好的找出錯誤。

tomcat logs下各日誌文件的含義,詳細可以參考這篇博客

https://www.cnblogs.com/qlqwjy/p/8036091.html

在你遇到問題的那一天的日誌文件中查看相關日誌,我在localhost日誌文件中找到了有用的信息,

一般在這幾個日誌文件中查找你所需要的信息:

localhost.日期.log:這個類似於第一種日誌,可是信息沒有第一種全;

localhost_access_log.日期.txt:這個是存放訪問tomcat的請求的所有地址以及請求的路徑、時間,請求協議以及返回碼等信息(重要);

tomcat7-stderr.日期.log:這個是log4j的錯誤日誌,因此在程序中要合理的捕捉異常;

tomcat7-stdout.日期.log:(類似於eclipse的控制檯的信息)這個是程序中的System語句打印的日誌(包括系統拋出的異常),也終於明白了爲什麼一再強調不能用打印語句進行系統調試。

我在localhost日誌文件中找到重複提示的一種錯誤:

com.jacob.com.ComFailException: Can't get object clsid from progid

這個錯誤 

  1. 有的說是原因是:regsvr32  ***.ocx命令進行註冊後 ,獲取的progid有誤;
  2. 有的說是註冊表中word或excel註冊信息不爲Word.Applocation和Eexcl.Aapplcation或者  ActiveXComponent app = new ActiveXComponent("Excel.Application");中Excel.Application寫錯了。同樣出現上述問題;
  3. 還有的說是沒有裝word

我一想,本地和服務器的差別,環境裝的都是一樣,就是沒有裝word,便找了個word2013版本的office word裝上,發現問題就解決了,這個問題可以折騰了我兩天,希望能幫得到你吧,加油!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章