2017-05-31 71 views
0

我正在從事涉及讀取和寫入xml文件的gradle項目。我在嘗試使用XMLStreamWriter將一個非常長的字符串轉義字符寫入文件時遇到了一個問題。該字符串最終需要大約半小時才能寫入文件,並導致我的應用程序停止響應。當我調用該方法時出現問題:XMLStreamWriter - 將長字符串寫入xml編寫器的問題

writer.writeAttribute(key, escapedXML) 

奇怪的是我已經將gradle項目導入到eclipse和intellij中;當我在eclipse中運行應用程序並運行使用gradle創建的可執行jar時,問題就出現了,但是當我在intellij中運行該程序時,它會很快完成而不會出現任何問題。除了build.gradle文件中包含的依賴項之外,我還沒有添加任何附加的jar文件。我試圖找到兩個IDE之間的依賴關係或設置的差異,但我一直未能找到任何東西。我也證實了兩個IDE都使用了相同的JRE。我也試着用分配給應用程序的更多內存來運行jar,但這沒有幫助。我確信我錯過了一些明顯的東西,我非常感謝一些幫助。請讓我知道,如果你能告訴我失蹤。

更新:花了幾天的時間看着這個沒有運氣。我使用intellij來創建一個可執行的jar文件,但也存在這個問題。我還在eclipse和intellij中運行時查看了應用程序的類路徑。在intellij中運行時,路徑包含jdk1.8.0_121 \ lib中的幾個jar文件,但在eclipse中運行時不包含這些jar文件。然後,我複製了intellij類路徑,並運行指定了該類路徑的jar。仍然沒有運氣。我希望我提供了足夠的細節來激發一些想法。任何建議將不勝感激。

+0

緩衝寫入應該已被使用,控制檯輸出/日誌記錄可能會以不同的行爲變慢。 java'-Xmx = ... m'的內存選項也許。 –

+0

我使用BufferOutputStream創建XMLStreamWriter。另外我試過改變虛擬機參數來調整內存選項,但它沒有幫助 – DarthRitis

+0

也許xalan與xerces XML分析器/寫入器的東西。實際的XML解析器使用接口和java SPI(服務提供者接口)進行選擇。而這兩者最爲突出。您可以使用調試器或java SPI調用來檢查是否使用了不同的XML庫。 –

回答

0

我想出了問題的原因。很顯然,intellij在eclipse沒有的時候自動將我的XMLStreamWriter的編碼設置爲UTF-8。我改變了這種

XMLStreamWriter xmlWriter = XMLOutputFactory.newInstance().createXMLStreamWriter(outStream); 

這個

XMLStreamWriter xmlWriter = XMLOutputFactory.newInstance().createXMLStreamWriter(outStream, "UTF-8"); 

,我的問題得到解決。