UTF-8 не поддерживает сообщение от подсистемы регистрации, Fuse ESB 4.4 - PullRequest
4 голосов
/ 28 сентября 2011

Я обновил свой ServiceMix до компиляции Fuse ESB 4.4.Однако я получил ошибки из системы ведения журнала, которые я не могу найти, как их обработать.

Сообщение об ошибке:

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

Кодировка UTF-8 НЕ используется.Файлы кодируются в кодировке Windows-1250 (символы из этого набора правильно преобразованы, другие, конечно, недоступны).

Я нашел обсуждение аналогичной проблемы здесь, в StackOverflow, где была обнаружена проблема с парсером Xerces, но без понятия, как ее решить в данном конкретном случае.Кто-нибудь успешно справился с этим?

1 Ответ

8 голосов
/ 28 сентября 2011

Проблема в том, что что-то пытается получить доступ к набору символов UTF-8 (возможно, через Charset.forName ("UTF-8")), который пытается создать экземпляр класса в пакете sun.nio.cs.UTF_8.

Хотя это будет существовать во время выполнения JVM без ограничений загрузчика классов, во время выполнения OSGi код завершится ошибкой.

Решением будет изменение пакета, генерирующего это сообщение об ошибке.со следующим:

Import-Package: ..., sun.nio.cs; разрешение: = необязательно

Это означает, что если он попытается создать экземпляр класса в этом пакете, он долженбыть в состоянии найти его - однако, если он отсутствует (скажем, потому что вы используете другое время выполнения), он все равно будет работать.

Обратите внимание, что это означает, что System.bundle экспортирует sun.nio.пакет cs, который вы можете сделать, сгенерировав фрагмент (см. http://wiki.osgi.org/wiki/Fragment) или попросив системный пакет экспортировать пакет sun.nio.cs со свойством org.osgi.framework.system.packages.

В любом случае, звучит так, что пакет журналирования должен исправить, а не то, что вам нужно исправить - вы сообщали об ошибке вверх по течению?

...