2011-06-10 26 views
7

我正在做一些使用JavaMail API的工作,並且已經運行了Java本身不支持的設計,例如UTF7/unicode-1-1-utf- 7。特別是對於那個編碼,我發現了用於UTF7的Java CharsetCharsetProviderJUTF7實現。但是,將jutf7.jar添加到我的類路徑中後,我仍然得到了UnsupportedEncodingException s,而unicode-1-1-utf-7肯定是JUTF7的別名之一。手動加載Java字符集

有沒有辦法手動加載Charset或確保Charset正在加載,以便我可以排除這是一個原因?

回答

6

除了將必要的類放入類路徑之外,還有一點需要使用新的Charset。引述的Javadoc:

一個charset提供標識自身 與資源目錄 META-INF /服務命名 java.nio.charset.spi.CharsetProvider 提供者配置文件 。文件 包含完全合格的 具體字符集提供程序類名稱列表,每行一個 。 [...]

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

這是存在於JAR特殊文件?

+0

這是問題

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

啓動它,謝謝!爲了避免安裝Apache Maven,我做了一些快速的源代碼遷移。因此我無意中將特殊文件從jar中移出。我現在用Maven構建了一個jar,問題已經解決。 – Keeblebrox 2011-06-10 19:36:19

2

你應該確保jar是由主類加載器加載的。您可以通過將jar添加到JVM的jre/lib/ext擴展目錄中,或者將其添加到主程序的類路徑中來實現此目的。例如,如果您正在使用Tomcat,請將-cp /path/to/jutf7.jar添加到Tomcat的啓動腳本中。

同樣,如果你想從斯卡拉REPL測試jutf7,你需要如下測試了Java HotSpot(TM) 64-Bit Server VM (build 20.8-b03-424, mixed mode)