Java 从字符集创建新字符串会抛出NoSuchMethodError(Android)

Java 从字符集创建新字符串会抛出NoSuchMethodError(Android),java,android,string,character-encoding,Java,Android,String,Character Encoding,我有一段代码创建了一个新的字符串,如下所示: private final static Charset UNICODE_CHARSET = Charset.forName("UTF-8"); public String makeNewUnicodeString(byte[] octects) { return new String(octects, UNICODE_CHARSET); } 在我的电脑上测试时,它工作正常。但当我在Android emulator上运行它时,它抛出: j

我有一段代码创建了一个新的
字符串
,如下所示:

private final static Charset UNICODE_CHARSET = Charset.forName("UTF-8");

public String makeNewUnicodeString(byte[] octects) {
    return new String(octects, UNICODE_CHARSET);
}
在我的电脑上测试时,它工作正常。但当我在Android emulator上运行它时,它抛出:

java.lang.NoSuchMethodError: java.lang.String.<init>

我使用的是Android 2.2 API 8,版本2。

这似乎是Java 5和Java 6之间的区别

接受字符集的构造函数仅在Java6中,而不在Java5中


编辑——所讨论的构造函数在android api中。。这并不能真正回答问题。

因为构造函数
字符串(byte[]data,Charset Charset)
仅添加到API级别9(Android SDK 2.3)中。所以更新SDK版本解决了我的问题。谢谢大家

此处为参考:

-Android开发者参考

.

您可以这样使用

byte[] raw = null;
        try {
            raw = key.getBytes("US-ASCII");
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

Android SDK提供了构造函数,
byte[] raw = null;
        try {
            raw = key.getBytes("US-ASCII");
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }