Dan*_*lor 4 java encoding osgi utf-8 apache-servicemix
我已将ServiceMix升级到Fuse ESB 4.4编译.但是,我得到了日志系统的错误,我找不到如何处理.
错误消息是:
Warning: encoding "UTF-8" not supported, using UTF-8
Run Code Online (Sandbox Code Playgroud)
不使用编码UTF-8.文件以Windows-1250编码进行编码(该组中的字符已正确转换,其他字符当然不可用).
我在StackOverflow上找到了关于类似问题的讨论,其中发现了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.framework.system.packages属性的sun.nio.cs包.
无论哪种方式,它听起来像是日志捆绑应该修复的东西,而不是你需要修复的东西 - 你有没有报告上游的bug?