Загрузка Java Charset вручную - PullRequest
7 голосов
/ 10 июня 2011

Я делаю некоторую работу, используя JavaMail API, и я столкнулся с кодировками, которые Java не поддерживает изначально (по замыслу), такими как UTF7 / unicode-1-1-utf -7. В частности, для этой кодировки я нашел JUTF7 реализацию Java Charset и CharsetProvider для UTF7. Однако, добавив jutf7.jar в мой путь к классу, я все равно получаю UnsupportedEncodingException s, а unicode-1-1-utf-7 определенно является одним из псевдонимов JUTF7.

Есть ли способ загрузить Charset вручную или убедиться, что Charset загружается, чтобы я мог исключить это как причину?

Ответы [ 2 ]

6 голосов
/ 10 июня 2011

Существует несколько больше возможностей использования нового Charset, кроме помещения необходимых классов в путь к классам.Чтобы процитировать Javadocs:

Поставщик кодировки идентифицирует себя с файлом конфигурации провайдера с именем java.nio.charset.spi.CharsetProvider в каталоге ресурсов META-INF / services.Файл должен содержать список полностью определенных имен классов конкретного поставщика charset, по одному на строку.[...]

(http://download.oracle.com/javase/6/docs/api/java/nio/charset/spi/CharsetProvider.html)

Этот специальный файл присутствует в JAR?

2 голосов
/ 21 июня 2012

Вы должны убедиться, что фляга загружена основным загрузчиком классов. Вы можете добиться этого, добавив jar в каталог расширения jre/lib/ext JVM или добавив его в путь к классам основной программы. Например, если вы используете Tomcat, добавьте -cp /path/to/jutf7.jar в скрипт запуска Tomcat.

Точно так же, если вы хотите протестировать jutf7 из REPL Scala, вам нужно запустить его следующим образом

env JAVA_OPTS="-cp /path/to/jutf7-1.0.0.jar" scala

Протестировано с Java HotSpot(TM) 64-Bit Server VM (build 20.8-b03-424, mixed mode)

...