2011-06-10 2 views
7

Je travaille avec l'API JavaMail, et j'ai exécuté des encodages que Java ne supporte pas nativement (par conception), comme UTF7/unicode-1-1-utf- 7. Pour ce codage en particulier, j'ai trouvé l'implémentation JUTF7 d'un Java Charset et CharsetProvider pour UTF7. Cependant, ayant ajouté le jutf7.jar à mon classpath, je reçois toujours s, et unicode-1-1-utf-7 est certainement l'un des alias de JUTF7.Chargement manuel d'un jeu de caractères Java

Y at-il un moyen de charger manuellement le Charset ou de s'assurer que le Charset est en cours de chargement afin que je puisse exclure cette cause?

Répondre

6

Il y a un peu plus à utiliser un nouveau jeu de caractères, mis à part mettre les classes nécessaires dans le classpath. Pour citer les Javadocs:

Un fournisseur charset s'identifie avec un fichier fournisseur configuration nommé java.nio.charset.spi.CharsetProvider dans le répertoire des ressources META-INF/services. Le fichier doit contenir une liste de noms de classes de fournisseurs de chargements concrets entièrement qualifiés, un par ligne. [...]

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

Est-ce présent fichier spécial dans le JAR?

+0

C'était la question, merci! Dans mes efforts pour éviter d'installer Apache Maven, j'ai effectué une migration rapide. J'ai accidentellement laissé le fichier spécial hors du pot en conséquence. J'ai construit un pot avec Maven, maintenant, et le problème a été résolu. – Keeblebrox

2

Vous devez vous assurer que le pot est chargé par le chargeur de classe principal. Vous pouvez y parvenir en ajoutant le fichier jar au répertoire d'extension jre/lib/ext de la JVM ou en l'ajoutant au chemin de classe du programme principal. Par exemple, si vous utilisez Tomcat, ajoutez -cp /path/to/jutf7.jar au script de démarrage de Tomcat.

De même, si vous voulez tester jutf7 du REPL scala, vous devez commencer comme suit

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

testé avec Java HotSpot(TM) 64-Bit Server VM (build 20.8-b03-424, mixed mode)

Questions connexes