2015-09-16 60 views
2

我想製作一個應用程序,可以在包括android在內的多個平臺上工作。我遇到的問題是,在計算機上運行我sun.misc.BASE64Decoder工程上的應用程序:Java 7平臺獨立的Base64?

BASE64Decoder decoder = new BASE64Decoder(); 
byte[] data = decoder.decodeBuffer(is); 

它不是一個Android設備上運行:

E/AndroidRuntime(18172): java.lang.NoClassDefFoundError: Failed resolution of: Lsun/misc/BASE64Decoder; 
E/AndroidRuntime(18172): at com.company.app.backend.SomeClass$1.run(SomeClass.java:55) 
E/AndroidRuntime(18172): at java.lang.Thread.run(Thread.java:818) 
E/AndroidRuntime(18172): Caused by: java.lang.ClassNotFoundException: Didn't find class "sun.misc.BASE64Decoder" on path: DexPathList[[zip file "/data/app/com.company.app-1/base.apk"],nativeLibraryDirectories=[/data/app/com.company.app-1/lib/arm, /vendor/lib, /system/lib]] 
E/AndroidRuntime(18172): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 
E/AndroidRuntime(18172): at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
E/AndroidRuntime(18172): at java.lang.ClassLoader.loadClass(ClassLoader.java:469) 
E/AndroidRuntime(18172): ... 2 more 
E/AndroidRuntime(18172): Suppressed: java.lang.ClassNotFoundException: sun.misc.BASE64Decoder 
E/AndroidRuntime(18172):  at java.lang.Class.classForName(Native Method) 
E/AndroidRuntime(18172):  at java.lang.BootClassLoader.findClass(ClassLoader.java:781) 
E/AndroidRuntime(18172):  at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) 
E/AndroidRuntime(18172):  at java.lang.ClassLoader.loadClass(ClassLoader.java:504) 
E/AndroidRuntime(18172):  ... 3 more 
E/AndroidRuntime(18172): Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available 

可惜我不能使用Java 8的java.util.Base64因爲我不能使用Java 8.我也不能使用android.util.Base64,因爲它不能在android之外工作。

我會很感激任何幫助。

+0

您可以使用[iharder base64庫](http://iharder.sourceforge.net/current/java/base64/)。 – SubOptimal

+0

我會檢查出來的 – serge

回答

1

如果您可以使用第三方庫,則可以使用commons-codec

如果沒有,您可以在線找到大量純Java實現。即使維基百科的文章有一個code sample。只需將它添加到您自己的實用程序類。

+0

編解碼器的Base64不接受流,只有一個字節數組。有沒有可以從流中讀取的東西? – serge