java.lang.NoClassDefFoundError: java.nio.charset.StandardCharsets

java.lang.NoClassDefFoundError: java.nio.charset.StandardCharsets

在模拟器中,我可以 运行 我的应用程序,但在带有 Jelly Bean 的设备上 OS 我会崩溃。知道为什么吗?

07-04 12:51:57.576 18243-18279/com.j4nos.moviebuffs6 E/AndroidRuntime: FATAL EXCEPTION: Thread-7940
          java.lang.NoClassDefFoundError: java.nio.charset.StandardCharsets
          at com.j4nos.moviebuffs6.Utility.run(Utility.java:52)
          at java.lang.Thread.run(Thread.java:838)

这是我需要字符编码的行:

byte[] out = str.getBytes(StandardCharsets.UTF_8);

StandardCharsetswas added in API Level 19。它不适用于 Android.

的任何 Jelly Bean 版本

问题是:你要支持果冻豆吗?

如果是:您可以改为使用 getBytes 方法的字符串参数化版本。您甚至可以根据 API 版本 运行 拆分代码行以使用一个版本而不是另一个版本。 (我推荐这个!)

如果否:只需将您的应用限制为最低 API- 等于或高于 19 的版本。

StringClass中声明了各种重载.getBytes()方法。

  public void getBytes(int, int, byte[], int);
  public byte[] getBytes(java.lang.String) throws java.io.UnsupportedEncodingException;
  public byte[] getBytes(java.nio.charset.Charset);
  public byte[] getBytes();

你可以使用其中的任何一个。但你应该试试这个..

 byte[] out = str.getBytes("UTF-8");

而不是

byte[] out = str.getBytes(StandardCharsets.UTF_8);