2011-09-28 26 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