8

私はJavaMailAPIを使用していくつかの作業を行っていますが、UTF7 / unicode-1-1-utf-7など、Javaがネイティブに(設計上)サポートしていないエンコーディングに遭遇しました。特にそのエンコーディングについては、JavaのJUTF7実装とCharsetUTF7を見つけましたCharsetProvider。ただし、クラスパスにjutf7.jarを追加しても、まだUnsupportedEncodingExceptionsが返され、unicode-1-1-utf-7は間違いなくJUTF7のエイリアスの1つです。

を手動でロードする方法、CharsetまたはCharsetがロードされていることを確認して、原因として除外できるようにする方法はありますか?

4

2 に答える 2

7

必要なクラスをクラスパスに入れる以外に、新しい文字セットを使用することにはもう少し多くのことがあります。Javadocを引用するには:

文字セットプロバイダーは、リソースディレクトリMETA-INF/servicesにあるjava.nio.charset.spi.CharsetProviderという名前のプロバイダー構成ファイルで自身を識別します。このファイルには、完全修飾された具象文字セットプロバイダークラス名のリストが1行に1つずつ含まれている必要があります。[...]

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

この特別なファイルはJARに存在しますか?

于 2011-06-10T18:27:58.670 に答える
2

jarがメインクラスローダーによってロードされていることを確認する必要があります。これを実現するには、jarをJVMのjre/lib/ext拡張ディレクトリに追加するか、メインプログラムのクラスパスに追加します。たとえば、Tomcatを使用している場合は、-cp /path/to/jutf7.jarTomcatの起動スクリプトに追加します。

同様に、scala REPLからjutf7をテストする場合は、次のように開始する必要があります。

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)

于 2012-06-21T07:51:14.123 に答える