2016-10-14 32 views
4

我真的需要你的幫助,答案也許非常接近,但還沒有。Lucee 5.0中的Docx4j庫

讓我先告訴你一些背景

Docx4j是一個Java庫,可用於與Microsoft Word文檔中的Java XML工作。我們使用Coldfusion編寫的舊應用程序已經正確使用這個庫。然後,我們轉向了更新的軟件Lucee。這已經給實施Docx4j庫帶來了問題。它最終通過將具有所有依賴項的Docx4j jar放入文件夾「wwwroot/WEB-INF/lucee/lib」中。重新啓動lucee服務後,它正確加載了jar。還有其他一些問題,但重要的部分是將jar加載到環境中。

那麼現在有什麼問題?

現在我們有一個新的項目安裝在新的Lucee 5.0上。一切正常,只有docx4j給出了問題。在代碼中使用docx4j時,它提供了一個錯誤,指出Docx4j loggerfactory未加載。這是Docx4j使用的依賴項。我發現Lucee 5.0與外部jar庫有不同的工作方式,並且它需要成爲一個OSGi框架包。但同樣,這是越來越漂亮很難理解什麼Lucee需要得到這方面的工作

什麼我想實現

什麼,每次使用ColdFusion/Lucee工作的jar文件Docx4j與它所有的依賴關係jar文件。所以我把所有這些jar文件放在Coldfusion讀取的文件夾中,然後運行。所以我想說的是,沒有設置文件或類似的東西(可能在jar文件本身?)

我試過了什麼?

所以當然我試了幾件事情:在 「的Inetpub/wwwroot文件/ WEB-INF/lucee/lib目錄」

  • 首先,我試圖把它。第一次在前端加載函數時,它聲明loggerfactory無法加載。在此之後調用函數之後,它聲明它根本無法加載docx4j。仍然在管理員那裏寫道Docx4j仍然活躍。

  • 嘗試上傳的zip文件通過lucee管理,它說,它是大的上傳

  • 試圖把它「lucee/tomcat的/ lucee服務器/上下文/ lib目錄」。與第1點完全相同的問題。我還可以在服務仍在運行時重命名Docx4j jar。這是不可能的工作示例。第二次錯誤更改後也很奇怪。這可能是Lucee對jar文件做了一些事情。

我認爲可能的解決方案是什麼?

我發現Lucee 5.0做了一些與jar庫不同的信息。現在它期望成爲一個OSGi包。您可以通過提供一個manifest.xml文件來製作一個包,使jar文件成爲一個包。但我不知道我該怎麼做。由於它始終與以前的版本一起工作,我認爲解決方案可能非常簡單。即添加一條說明依賴關係的行。因此,也許是一個cfadmin標籤,可以加載Docx4j使用的這些依賴關係。

什麼是一些有用的信息?

我真的希望有人知道這個問題的答案。從版本4.5到5的更新不應該有這樣的結果。我們需要圖書館,否則我們必須回到舊版本,這是我們的客戶不同意的。我真的認爲最後一個鏈接有解決方案,但處理的信息非常困難。

來自荷蘭的問候!

回答

4

隨着Lucee 5,你有三種選擇:

1)如果磁帶庫是一個OSGi包,只需將其{lucee-server}/bundles

2)如果磁帶庫是不是一個OSGi bundle中,似乎是在Docx4j的情況下,將jar(及其依賴關係,如果需要的話)放到servlet容器的類路徑中,例如Tomcat或Jetty(或者您使用的任何一種)。

「最簡單的」是將jar放入與Lucee jar相同的目錄中。

另一種選擇是更新容器的類路徑,例如,在Tomcat的情況下將它添加到common.loader{catalina-base}/conf/catalina.properties中。

3)指定自定義路徑爲你的罐子,無論是作爲參數傳遞給createObject(java...),或Application.cfc通過this.javaSettings

至於缺少的依賴關係,一定要使用,其中包括所有的依賴罐子,即docx4j-community-3.3.1.zip而不是docx4j-3.3.1.jar如果從http://www.docx4java.org/downloads.html下載

+0

哇!驚人。我已經放棄了它,但我看到你發佈了一個答案。按照您的要求,我嘗試將它與lucee jar文件放在一起。而且,這工作完美!所以下週我會嘗試一個更好的解決方案,但現在我們知道它按預期工作。 Thx再次,你的驚人! – RolandMakkelie

+0

不客氣。很高興幫助。 – isapir