Eclipse下整合OpenOffice要注意的問題

來源:互聯網
上載者:User
    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中。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.