4

我已将我的 ServiceMix 升级到 Fuse ESB 4.4 编译。但是,我从日志系统中得到了错误,我找不到如何处理。

错误信息是:

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

不使用编码 UTF-8。文件以 Windows-1250 编码进行编码(该集中的字符已正确转换,其他字符当然不可用)。

我在 StackOverflow 上找到了关于类似问题的讨论,在那里发现了 Xerces 解析器的问题,但是没有线索,如何在这种特殊情况下解决它。有没有人成功处理过?

4

1 回答 1

8

问题是某些东西试图访问 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)或让系统包导出带有 org.osgi.framework.system.packages 属性的 sun.nio.cs 包。

无论哪种方式,这听起来像是日志包应该修复的东西,而不是您需要修复的东西 - 您是否向上游报告了错误?

于 2011-09-28T11:03:22.353 回答