编程语言
首页 > 编程语言> > java – 来自日志子系统Fuse ESB 4.4的UTF-8不支持的消息

java – 来自日志子系统Fuse ESB 4.4的UTF-8不支持的消息

作者:互联网

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

错误消息是:

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

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

我在StackOverflow上找到了discussion about similar problem,其中发现了Xerces解析器的问题,但是没有线索,如何在这种特殊情况下解决它.有没有人成功处理过它?

解决方法:

问题是某些东西试图访问UTF-8字符集(可能是通过Charset.forName(“UTF-8”)),它试图在sun.nio.cs.UTF_8包中实例化一个类.

虽然这将存在于没有类加载器约束的JVM的运行时中,但在OSGi运行时中,代码将失败.

解决方案是使用以下内容修改生成此错误消息的包:

Import-Package:…,sun.nio.cs; resolution:= optional

这意味着如果它试图在该包中实例化一个类,它应该能够找到它 – 但是,如果它不存在(比如,因为你使用的是不同的运行时),那么它仍然可以工作.

请注意,这意味着System.bundle正在导出sun.nio.cs包,您可以通过生成片段(参见http://wiki.osgi.org/wiki/Fragment)或让系统包使用org.osgi导出sun.nio.cs包来实现. framework.system.packages属性.

无论哪种方式,它听起来像是日志捆绑应该修复的东西,而不是你需要修复的东西 – 你有没有报告上游的bug?

标签:java,encoding,utf-8,osgi,apache-servicemix
来源: https://codeday.me/bug/20190610/1209608.html