2011-09-28 42 views
4

我已將ServiceMix升級到Fuse ESB 4.4編譯。然而,我得到了來自日誌系統的錯誤,我無法找到如何處理。來自日誌子系統的UTF-8不支持消息,Fuse ESB 4.4

的錯誤信息是:

Warning: encoding "UTF-8" not supported, using UTF-8 

編碼UTF-8不被使用。文件以Windows-1250編碼進行編碼(該文件中的字符被正確轉換,其他字符當然不可用)。

我在StackOverflow上找到了discussion about similar problem,在那裏發現了Xerces解析器的問題,但是沒有線索,在這種情況下如何解決它。有沒有人成功處理過它?

+0

還是沒有,有人有類似的錯誤或有錯誤? –

回答

7

問題是某些東西試圖訪問UTF-8字符集(可能通過Charset.forName(「UTF-8」))試圖實例化一個包中的類sun.nio.cs.UTF_8 。

雖然這將存在於沒有類加載器約束的JVM的運行時中,但在OSGi運行時中,代碼將失敗。

該解決方案將是修改正在生成用下面的此錯誤消息包:

導入級封裝:...,sun.nio.cs;分辨率:=可選

這意味着,如果它試圖在該包中實例化一個類,它應該能夠找到它 - 但是,如果它不存在(例如,因爲您使用的是不同的運行時),那麼它仍然可以工作。

請注意,這意味着System.bundle正在導出sun.nio.cs包,您可以通過生成片段(請參閱http://wiki.osgi.org/wiki/Fragment)或通過讓系統包導出sun.nio.cs包org.osgi.framework.system.packages屬性。

無論哪種方式,它聽起來像日誌包應該修復的東西,而不是你需要修復的東西 - 你是否向上遊報告了錯誤?

+0

不應該使用sun.nio.cs作爲內部軟件包,並且不能被OSGi導出?我使用的是Fuse ESB本身的一部分的日誌系統。問題可能是Fuse ESB 4.4中將JRE更改爲1.6。 –

+0

這就是問題所在,它是JRE的內部包裝。然而,OSGi公開的唯一包是java。*命名空間中的包,因此任何JRE特定的類都不能在運行時打包。這就是爲什麼你的日誌類無法找到它,最終你爲什麼會得到這個錯誤信息。 – AlBlue