我想註冊一個自定義的CharsetProvider能夠使用X-Gsm7Bit編碼。我使用Logica的供應商https://github.com/OpenSmpp/opensmpp/tree/master/charset/src/main/java/org/smpp/charset。 要註冊這個新的字符集提供商,我使用內容org.smpp.charset.Gsm7BitCharsetProvider
的META-INF/services/java.nio.charsets.spi.CharsetProvider
文件。春季啓動1.4.x和自定義CharsetProvider
我無法使它工作。 測試應用程序的來源是這裏https://github.com/asmsoft/provider
我得到java.util.ServiceConfigurationError: java.nio.charset.spi.CharsetProvider: Provider org.smpp.charset.Gsm7BitCharsetProvider not found
當我開始它作爲脂肪罐子
mvn clean
mvn package
java -jar target/provider-1.0-SNAPSHOT.jar
如果我mvn spring-boot:run
啓動它,我得到java.io.UnsupportedEncodingException: X-Gsm7Bit
而且一切正常時,我用我的IDE啓動應用程序。
目前我解決了我的問題,如下所示:我已經把jar提供的自定義字符集轉換爲JAVA_HOME/jre/lib/ext
,並且一切按預期工作,字符集正在註冊。
我對這個解決方案不滿意,我想請求您的幫助。
嵌套jar從'lib'移動到'BOOT-INF/lib'應該沒有什麼區別,因爲兩者只對Boot的類加載器而不是JVM的app類加載器可見。您能否提供一個能夠再現問題的小樣本,並說明如何以及何時嘗試使用自定義提供程序? –
@AndyWilkinson,感謝您的回覆,我已經更改了問題的描述並添加了一個鏈接到測試應用程序。 –