2016-08-09 14 views
1

これは、Loading a Java Charset manuallyの繰り返しではありません。 META-INFを使わずに同じことをしたいと思います。出来ますか?さまざまなサービスタイプの一般的なソリューションですか?動的に明示的にJava文字セットをロード

この特定のケースでは、JUTF7のようなCharsetProviderを使用してutf-7データを処理する必要があります。 jarをクラスパスに追加するだけでなく、META-INF/servicesにファイルを追加する必要があります。ファイル名はjava.nio.charset.spi.CharsetProvider、内容はjutf7です。ただし、この場合はMETA-INFを使用することはできません。回避策はありますか?

+1

META-INFを使用できないのはなぜですか? – Andreas

答えて

2

いいえ、CharSetProviderを実装する以外は新しいCharSetを登録することはできません。META-INF/servicesでしか登録できません。 javadocを参照してください。

しかし、それはあなたががそのファイルをjutf7のために提供しなければならないということを意味しません。 jutf7 jarファイルにはすでに必要なサービスファイルがあります。あなたがリンクしているページには次のように書かれています:あなたのクラスパスに瓶を落とすだけで、あなたは行く準備ができています。

+0

解決策を提案したチップをありがとう。残念ながら、私の場合、システムクラスローダーはユーザーがインポートしたクラスをロードするのと同じクラスローダーではなく、キャラクタセットプロバイダサービスはシステムクラスローダを直接使用するため失敗します。反射を伴う解決策がありますが、それほど美しいものではありません。 –

+2

これは古代の未解決のバグです:[JDK-4619777:(cs)キャラクタ・セット・ローダーを介してキャラクタ・セット・プロバイダを検索しません](http://bugs.java.com/bugdatabase/view_bug.do?bug_id=4619777) – Andreas

関連する問題