Eclipse下集成OpenOffice要注意的問題

    OpenOffice是一款優秀的開源辦公套件,由sun公司貢獻給開源社區。如果在Eclipse下繼承它,則相當於給Eclipse添加了辦公套件的支持。爲此,筆者進行了嘗試,如下。
    OpenOffice提供了若干Jar包,專門提供在Java裏面嵌入OpenOffice和調用OpenOffice服務的方法。在其自帶的例子中,有OfficeBean和OfficeDev可供參考。但是,如果把他們直接採用SWT_AWT嵌入時,會出現找不到officebean庫的異常。經分析,原因在於officeben.jar中的LocalOfficeConnection文件加載officebean庫時,採用瞭如下代碼:
    String aSharedLibName = getProgramPath() + java.io.File.separator + System.mapLibraryName(OFFICE_LIB_NAME);
    System.load(aSharedLibName);

而getProgramPath()採用
    File path = NativeLibraryLoader.getResource(this.getClass().getClassLoader(), aExec);
    其中,aExec爲soffice.exe文件,即OpenOffice的啓動文件名稱。NativeLibraryLoader.getResource採用 classloader.getResource(s) 加載資源。
    問題就出現在最後的classloader.getResource(s)。在普通的Java程序中,只要在PATH路徑裏面設置了OpenOffice的路徑,並且把OpenOffice的路徑傳遞給classpath,則通過classloader.getResource(s)可以正確的找到soffice.exe,從而可以正確得到aSharedLibName的路徑。但是在Eclipse下,無論怎樣設置PATH和傳遞classpath都不能使Eclipse找到soffice,從而加載庫錯誤。
    找到問題的根源後,直接修改getProgramPath()就可以了。爲了在客戶機上不用安裝OpenOffice,把OpenOffice安裝之後的目錄拷貝到插件目錄下,然後採用如下代碼獲取插件的目錄:
    mProgramPath = Platform.getBundle("org.openoffice").getLocation()+"program"; if(mProgramPath.indexOf("@/")>0) { 
        mProgramPath=mProgramPath.substring(mProgramPath.indexOf("@/")+2);
   }
    這樣就可以加載了。但是別忘記了在PATH中設置上述路徑,因爲officebean在加載其他組件時採用默認方式,必須在PATH中設置路徑才能正確找到。這就要求製作安裝程序,由安裝程序把此路徑寫入PATH中。
發佈了32 篇原創文章 · 獲贊 5 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章