2011年8月5日 星期五

【JACOB】Java-COM Bridge 介紹

在說到 JACOB 之前先來談談 Java 特性

首先 大家都知道的 Java 優點中 其中一項即是 "跨平台"

Java 將程式設計師與底層的作業系統隔開  讓 Java 程式能夠在不同的平台上開發、運行

說到這個優點,也就因為如此導致 Java 與底層的作業系統變的毫無關係

這樣的情況讓 Java 需要透過底層的作業系統操作或運用某些函式庫是格外困難

例如最近遇到的需求,我們需要將 MS office 的檔案轉檔成 HTM

如果 AP 存在於 Window OS 下,要如何透過 Java 實現?有幾種方法

其中一個的解決方案可以透過 JNI 另外一種可以考慮一下 JACOB

JACOB 是透過 C 語言寫成的,並提供一個 Java bridge 讓你的 Java 程式可以呼叫

執行環境需要在 Window OS 下,在 Linux 是不 work 的

因為在使用 JACOB 時,除了導入相關的 JAR 以外,還需將 jacob.dll

放到 system32 底下

可以到 http://danadler.com/jacob/ 下載 JACOB

但是這邊的Project可能是舊版的,它支援的 MS Office 是 2000 之前的

所以如果用了這裡的Library出現了類似以下的問題

Exception in thread "main" com.jacob.com.ComFailException: A COM exception has been encountered

而且找不出原因的話

那建議到 http://sourceforge.net/projects/jacob-project/ 去下載最新版的

如果今天運用 JACOB 的 AP 是一支 WEB 的 project 的話 要是發生的以下問題

Exception in thread "main" java.lang.UnsatisfiedLinkError: no jacob in java.library.path

可以嘗試看看在 WEB-INF/lib 底下加入 JACOB 的 JAR 檔

如果還是有提它問題

建議將 DLL 檔放入到JAVA 安裝路徑中 C:\Program Files\Java\jdk1.6.0_18\bin 底下

之後在來教紹一下 JACOB 如何針對 Office 執行轉檔







沒有留言:

張貼留言