Ich habe einige Code in meiner Activity-Klasse, die die sun.misc.BASE64Encoder
-Klasse verwendet. Aber es zeigt java.lang.NoClassDefFoundError : sun.misc.BASE64Encoder
. Brauche ich das jar
? Wo kann ich es herunterladen?
Antworten
Zu viele Anzeigen?Verwenden Sie keine sun.*
Klassen. Verwenden Sie für Base64 in Android entweder die native Klasse oder fügen Sie Ihrem Projekt eine Bibliothek hinzu, die dies durchführt (Apache Commons usw.). Alternativ können Sie einfach den Android-Quellcode in Ihr Projekt kopieren (in Ihrem eigenen Paket), wenn Sie es auf Geräten vor Version 2.2 verwenden müssen.
Seit Java 8 können Sie die java.util.Base64
Klasse verwenden:
byte[] original = "Base64".getBytes(StandardCharsets.UTF_8);
// encode
byte[] toBase64 = Base64.getEncoder().encode(original);
// decode
byte[] fromBase64 = Base64.getDecoder().decode(toBase64);
// output
System.out.println(new String(toBase64)); //QmFzZTY0
System.out.println(new String(fromBase64)); //Base64
System.out.println(Arrays.equals(original, fromBase64)); //true
Siehe auch: Wie kann ich einen String in einen GZIP Base64 String konvertieren?
Für mich ist es mit einfachen Schritten gelöst, ich habe Java11 JDK verwendet. In dieser Version sind die Base64-Klassen veraltet, deshalb erhalten wir dieses Problem. Die Änderung auf Java 8 hat das Problem gelöst. Schritte: In Eclipse,
- Gehen Sie zu, Windows-> Einstellungen-> Installierte JREs
- Hinzufügen-> wählen Sie JDK8 oder eine frühere Version von JDK aus-> Hinzufügen
- Machen Sie es zum Standard-JDK, indem Sie dieses JDK auswählen
- Anwenden und Schließen
Und, Fertig.
Danke.