Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 新字符串的签名是什么(字节[])_Java_Android_Constructor_Java Native Interface - Fatal编程技术网

Java 新字符串的签名是什么(字节[])

Java 新字符串的签名是什么(字节[]),java,android,constructor,java-native-interface,Java,Android,Constructor,Java Native Interface,从JNI调用String.java的构造函数时出错 错误: java.lang.NoSuchMethodError:Ljava/lang/String类中没有名为“”签名为“([B)Ljava/nio/ByteBuffer;”的方法 爪哇: JNI: 调用新字符串(字节[]b)String.java的方法(此处有错误,可能签名错误?) 我的问题在遵循EJP的指示后得到解决,谢谢您,先生 const char*SIG_NEW_STRING=“([B)V” 为了获得String.java类中函数的签

从JNI调用String.java的构造函数时出错

错误:

java.lang.NoSuchMethodError:Ljava/lang/String类中没有名为“”签名为“([B)Ljava/nio/ByteBuffer;”的方法

爪哇:

JNI:

调用新字符串(字节[]b)String.java的方法(此处有错误,可能签名错误?)


我的问题在遵循EJP的指示后得到解决,谢谢您,先生

const char*SIG_NEW_STRING=“([B)V”

为了获得String.java类中函数的签名,我使用javap如下:

C:\Program Files\Java\jdk1.8.0_65\bin>javap -s java.lang.String

结果:

Compiled from "String.java"
public final class java.lang.String implements java.io.Serializable, java.lang.Comparable<java.lang.String>, java.lang.CharSequence {
  public static final java.util.Comparator<java.lang.String> CASE_INSENSITIVE_ORDER;
    descriptor: Ljava/util/Comparator;
  public java.lang.String();
    descriptor: ()V

  public java.lang.String(java.lang.String);
    descriptor: (Ljava/lang/String;)V

  public java.lang.String(char[]);
    descriptor: ([C)V

  public java.lang.String(char[], int, int);
    descriptor: ([CII)V

  public java.lang.String(int[], int, int);
    descriptor: ([III)V

  public java.lang.String(byte[], int, int, int);
    descriptor: ([BIII)V

  public java.lang.String(byte[], int);
    descriptor: ([BI)V

  public java.lang.String(byte[], int, int, java.lang.String) throws java.io.UnsupportedEncodingException;
    descriptor: ([BIILjava/lang/String;)V

  public java.lang.String(byte[], int, int, java.nio.charset.Charset);
    descriptor: ([BIILjava/nio/charset/Charset;)V

  public java.lang.String(byte[], java.lang.String) throws java.io.UnsupportedEncodingException;
    descriptor: ([BLjava/lang/String;)V

  public java.lang.String(byte[], java.nio.charset.Charset);
    descriptor: ([BLjava/nio/charset/Charset;)V

  public java.lang.String(byte[], int, int);
    descriptor: ([BII)V

  public java.lang.String(byte[]);
    descriptor: ([B)V

  public java.lang.String(java.lang.StringBuffer);
    descriptor: (Ljava/lang/StringBuffer;)V

  public java.lang.String(java.lang.StringBuilder);
    descriptor: (Ljava/lang/StringBuilder;)V

  public int length();
    descriptor: ()I

  public boolean isEmpty();
    descriptor: ()Z

  public native char charAt(int);
    descriptor: (I)C

  public int codePointAt(int);
    descriptor: (I)I

  public int codePointBefore(int);
    descriptor: (I)I

  public int codePointCount(int, int);
    descriptor: (II)I

  public int offsetByCodePoints(int, int);
    descriptor: (II)I

  public void getChars(int, int, char[], int);
    descriptor: (II[CI)V

  public void getBytes(int, int, byte[], int);
    descriptor: (II[BI)V

  public byte[] getBytes(java.lang.String) throws java.io.UnsupportedEncodingException;
    descriptor: (Ljava/lang/String;)[B

  public byte[] getBytes(java.nio.charset.Charset);
    descriptor: (Ljava/nio/charset/Charset;)[B

  public byte[] getBytes();
    descriptor: ()[B

  public boolean equals(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z

  public boolean contentEquals(java.lang.StringBuffer);
    descriptor: (Ljava/lang/StringBuffer;)Z

  public boolean contentEquals(java.lang.CharSequence);
    descriptor: (Ljava/lang/CharSequence;)Z

  public boolean equalsIgnoreCase(java.lang.String);
    descriptor: (Ljava/lang/String;)Z

  public native int compareTo(java.lang.String);
    descriptor: (Ljava/lang/String;)I

  public int compareToIgnoreCase(java.lang.String);
    descriptor: (Ljava/lang/String;)I

  public boolean regionMatches(int, java.lang.String, int, int);
    descriptor: (ILjava/lang/String;II)Z

  public boolean regionMatches(boolean, int, java.lang.String, int, int);
    descriptor: (ZILjava/lang/String;II)Z

  public boolean startsWith(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)Z

  public boolean startsWith(java.lang.String);
    descriptor: (Ljava/lang/String;)Z

  public boolean endsWith(java.lang.String);
    descriptor: (Ljava/lang/String;)Z

  public int hashCode();
    descriptor: ()I

  public int indexOf(int);
    descriptor: (I)I

  public int indexOf(int, int);
    descriptor: (II)I

  public int lastIndexOf(int);
    descriptor: (I)I

  public int lastIndexOf(int, int);
    descriptor: (II)I

  public int indexOf(java.lang.String);
    descriptor: (Ljava/lang/String;)I

  public int indexOf(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)I

  public int lastIndexOf(java.lang.String);
    descriptor: (Ljava/lang/String;)I

  public int lastIndexOf(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)I

  public java.lang.String substring(int);
    descriptor: (I)Ljava/lang/String;

  public java.lang.String substring(int, int);
    descriptor: (II)Ljava/lang/String;

  public java.lang.CharSequence subSequence(int, int);
    descriptor: (II)Ljava/lang/CharSequence;

  public native java.lang.String concat(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;

  public java.lang.String replace(char, char);
    descriptor: (CC)Ljava/lang/String;

  public boolean matches(java.lang.String);
    descriptor: (Ljava/lang/String;)Z

  public boolean contains(java.lang.CharSequence);
    descriptor: (Ljava/lang/CharSequence;)Z

  public java.lang.String replaceFirst(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;

  public java.lang.String replaceAll(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;

  public java.lang.String replace(java.lang.CharSequence, java.lang.CharSequence);
    descriptor: (Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;

  public java.lang.String[] split(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)[Ljava/lang/String;

  public java.lang.String[] split(java.lang.String);
    descriptor: (Ljava/lang/String;)[Ljava/lang/String;

  public java.lang.String toLowerCase(java.util.Locale);
    descriptor: (Ljava/util/Locale;)Ljava/lang/String;

  public java.lang.String toLowerCase();
    descriptor: ()Ljava/lang/String;

  public java.lang.String toUpperCase(java.util.Locale);
    descriptor: (Ljava/util/Locale;)Ljava/lang/String;

  public java.lang.String toUpperCase();
    descriptor: ()Ljava/lang/String;

  public java.lang.String trim();
    descriptor: ()Ljava/lang/String;

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;

  public native char[] toCharArray();
    descriptor: ()[C

  public static java.lang.String format(java.lang.String, java.lang.Object...);
    descriptor: (Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

  public static java.lang.String format(java.util.Locale, java.lang.String, java.lang.Object...);
    descriptor: (Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

  public static java.lang.String valueOf(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/String;

  public static java.lang.String valueOf(char[]);
    descriptor: ([C)Ljava/lang/String;

  public static java.lang.String valueOf(char[], int, int);
    descriptor: ([CII)Ljava/lang/String;

  public static java.lang.String copyValueOf(char[], int, int);
    descriptor: ([CII)Ljava/lang/String;

  public static java.lang.String copyValueOf(char[]);
    descriptor: ([C)Ljava/lang/String;

  public static java.lang.String valueOf(boolean);
    descriptor: (Z)Ljava/lang/String;

  public static java.lang.String valueOf(char);
    descriptor: (C)Ljava/lang/String;

  public static java.lang.String valueOf(int);
    descriptor: (I)Ljava/lang/String;

  public static java.lang.String valueOf(long);
    descriptor: (J)Ljava/lang/String;

  public static java.lang.String valueOf(float);
    descriptor: (F)Ljava/lang/String;

  public static java.lang.String valueOf(double);
    descriptor: (D)Ljava/lang/String;

  public native java.lang.String intern();
    descriptor: ()Ljava/lang/String;

  public int compareTo(java.lang.Object);
    descriptor: (Ljava/lang/Object;)I

  static {};
    descriptor: ()V
}
从“String.java”编译而来
公共最终类java.lang.String实现java.io.Serializable、java.lang.Comparable、java.lang.CharSequence{
公共静态final java.util.Comparator不区分大小写顺序;
描述符:Ljava/util/Comparator;
public java.lang.String();
描述符:()V
public java.lang.String(java.lang.String);
描述符:(Ljava/lang/String;)V
public java.lang.String(char[]);
描述符:([C)V
public java.lang.String(char[],int,int);
描述符:([CII)V
public java.lang.String(int[],int,int);
描述符:([III)V
public java.lang.String(字节[],int,int,int);
描述符:([BIII)V
public java.lang.String(字节[],int);
描述符:([BI)V
public java.lang.String(字节[],int,int,java.lang.String)抛出java.io.UnsupportedEncodingException;
描述符:([BIILjava/lang/String;)V
public java.lang.String(字节[],int,int,java.nio.charset.charset);
描述符:([BIILjava/nio/charset/charset;)V
public java.lang.String(byte[],java.lang.String)抛出java.io.UnsupportedEncodingException;
描述符:([BLjava/lang/String;)V
public java.lang.String(字节[],java.nio.charset.charset);
描述符:([BLjava/nio/charset/charset;)V
public java.lang.String(字节[],int,int);
描述符:([BII)V
public java.lang.String(字节[]);
描述符:([B)V
public java.lang.String(java.lang.StringBuffer);
描述符:(Ljava/lang/StringBuffer;)V
public java.lang.String(java.lang.StringBuilder);
描述符:(Ljava/lang/StringBuilder;)V
公共整数长度();
描述符:()I
公共布尔值为空();
描述符:()Z
公共本地字符(int);
描述符:(I)C
公共int代码点(int);
描述者:(I)I
公共int代码点(int);
描述者:(I)I
公共int代码点计数(int,int);
描述者:(二)一
公共int offsetByCodePoints(int,int);
描述者:(二)一
公共void getChars(int,int,char[],int);
描述符:(II[CI)V
public void getBytes(int,int,byte[],int);
描述符:(II[BI)V
公共字节[]getBytes(java.lang.String)抛出java.io.UnsupportedEncodingException;
描述符:(Ljava/lang/String;)[B
公共字节[]getBytes(java.nio.charset.charset);
描述符:(Ljava/nio/charset/charset;)[B
公共字节[]getBytes();
描述符:()[B
公共布尔等于(java.lang.Object);
描述符:(Ljava/lang/Object;)Z
公共布尔contentEquals(java.lang.StringBuffer);
描述符:(Ljava/lang/StringBuffer;)Z
公共布尔contentEquals(java.lang.CharSequence);
描述符:(Ljava/lang/CharSequence;)Z
公共布尔equalsIgnoreCase(java.lang.String);
描述符:(Ljava/lang/String;)Z
公共本机int compareTo(java.lang.String);
描述符:(Ljava/lang/String;)I
public int compareToIgnoreCase(java.lang.String);
描述符:(Ljava/lang/String;)I
公共布尔区域匹配(int,java.lang.String,int,int);
描述符:(ILjava/lang/String;II)Z
公共布尔区域匹配(boolean,int,java.lang.String,int,int);
描述符:(ZILjava/lang/String;II)Z
公共布尔startsWith(java.lang.String,int);
描述符:(Ljava/lang/String;I)Z
公共布尔startsWith(java.lang.String);
描述符:(Ljava/lang/String;)Z
公共布尔值endsWith(java.lang.String);
描述符:(Ljava/lang/String;)Z
公共int hashCode();
描述符:()I
公共int索引of(int);
描述者:(I)I
公共int索引of(int,int);
描述者:(二)一
公共int lastIndexOf(int);
描述者:(I)I
公共int lastIndexOf(int,int);
描述者:(二)一
public int indexOf(java.lang.String);
描述符:(Ljava/lang/String;)I
public int indexOf(java.lang.String,int);
描述符:(Ljava/lang/String;I)I
public int lastIndexOf(java.lang.String);
描述符:(Ljava/lang/String;)I
public int lastIndexOf(java.lang.String,int);
描述符:(Ljava/lang/String;I)I
public java.lang.String子字符串(int);
描述符:(I)Ljava/lang/String;
public java.lang.String子字符串(int,int);
描述符:(II)Ljava/lang/String;
public java.lang.CharSequence子序列(int,int);
描述符:(II)Ljava/lang/CharSequence;
公共本机java.lang.String concat(java.lang.String);
描述符:(Ljava/lang/String;)Ljava/lang/String;
public java.lang.String替换(char,char);
描述符:(CC)Ljava/lang/String;
公共布尔匹配(java.lang.String);
描述符:(Ljava/lang/String;)Z
公共布尔包含(java.lang.CharSequence);
描述符:(Ljava/lang/CharSequence;)Z
public java.lang.String replaceFirst(java.lang.String,java.lang.String);
描述符:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
public java.lang.String replaceAll(java.lang.String,java.lang.String);
描述符:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
public java.lang.String替换(java.lang.CharSequence,java.lang.CharSequence);
描述符:(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
public java.lang.String[]拆分(java.lang.String,int);
描述符:(Ljava/lang/String;I)[Ljava/lang/String;
public java.lang.String[]拆分(java.lang.String);
描述符:(Ljava/lang/String;
clsString = env->FindClass(CLS_STRING);
if (clsString == NULL) {
    return JNI_ERR;
}

_clsString = (jclass) env->NewWeakGlobalRef(clsString);
if (_clsString == NULL) {
    return JNI_ERR;
}
_midNewString = env->GetMethodID(_clsString, MID_NEW_STRING, SIG_NEW_STRING);
if (_midNewString == NULL) {
    return JNI_ERR;  // ERROR ini here
}
C:\Program Files\Java\jdk1.8.0_65\bin>javap -s java.lang.String
C:\Program Files\Java\jdk1.8.0_65\bin>javap -s -classpath bin/classes C:\Users\{your user account}\AppData\Local\Android\sdk\platforms\android-25\java\lang\String.class
Compiled from "String.java"
public final class java.lang.String implements java.io.Serializable, java.lang.Comparable<java.lang.String>, java.lang.CharSequence {
  public static final java.util.Comparator<java.lang.String> CASE_INSENSITIVE_ORDER;
    descriptor: Ljava/util/Comparator;
  public java.lang.String();
    descriptor: ()V

  public java.lang.String(java.lang.String);
    descriptor: (Ljava/lang/String;)V

  public java.lang.String(char[]);
    descriptor: ([C)V

  public java.lang.String(char[], int, int);
    descriptor: ([CII)V

  public java.lang.String(int[], int, int);
    descriptor: ([III)V

  public java.lang.String(byte[], int, int, int);
    descriptor: ([BIII)V

  public java.lang.String(byte[], int);
    descriptor: ([BI)V

  public java.lang.String(byte[], int, int, java.lang.String) throws java.io.UnsupportedEncodingException;
    descriptor: ([BIILjava/lang/String;)V

  public java.lang.String(byte[], int, int, java.nio.charset.Charset);
    descriptor: ([BIILjava/nio/charset/Charset;)V

  public java.lang.String(byte[], java.lang.String) throws java.io.UnsupportedEncodingException;
    descriptor: ([BLjava/lang/String;)V

  public java.lang.String(byte[], java.nio.charset.Charset);
    descriptor: ([BLjava/nio/charset/Charset;)V

  public java.lang.String(byte[], int, int);
    descriptor: ([BII)V

  public java.lang.String(byte[]);
    descriptor: ([B)V

  public java.lang.String(java.lang.StringBuffer);
    descriptor: (Ljava/lang/StringBuffer;)V

  public java.lang.String(java.lang.StringBuilder);
    descriptor: (Ljava/lang/StringBuilder;)V

  public int length();
    descriptor: ()I

  public boolean isEmpty();
    descriptor: ()Z

  public native char charAt(int);
    descriptor: (I)C

  public int codePointAt(int);
    descriptor: (I)I

  public int codePointBefore(int);
    descriptor: (I)I

  public int codePointCount(int, int);
    descriptor: (II)I

  public int offsetByCodePoints(int, int);
    descriptor: (II)I

  public void getChars(int, int, char[], int);
    descriptor: (II[CI)V

  public void getBytes(int, int, byte[], int);
    descriptor: (II[BI)V

  public byte[] getBytes(java.lang.String) throws java.io.UnsupportedEncodingException;
    descriptor: (Ljava/lang/String;)[B

  public byte[] getBytes(java.nio.charset.Charset);
    descriptor: (Ljava/nio/charset/Charset;)[B

  public byte[] getBytes();
    descriptor: ()[B

  public boolean equals(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z

  public boolean contentEquals(java.lang.StringBuffer);
    descriptor: (Ljava/lang/StringBuffer;)Z

  public boolean contentEquals(java.lang.CharSequence);
    descriptor: (Ljava/lang/CharSequence;)Z

  public boolean equalsIgnoreCase(java.lang.String);
    descriptor: (Ljava/lang/String;)Z

  public native int compareTo(java.lang.String);
    descriptor: (Ljava/lang/String;)I

  public int compareToIgnoreCase(java.lang.String);
    descriptor: (Ljava/lang/String;)I

  public boolean regionMatches(int, java.lang.String, int, int);
    descriptor: (ILjava/lang/String;II)Z

  public boolean regionMatches(boolean, int, java.lang.String, int, int);
    descriptor: (ZILjava/lang/String;II)Z

  public boolean startsWith(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)Z

  public boolean startsWith(java.lang.String);
    descriptor: (Ljava/lang/String;)Z

  public boolean endsWith(java.lang.String);
    descriptor: (Ljava/lang/String;)Z

  public int hashCode();
    descriptor: ()I

  public int indexOf(int);
    descriptor: (I)I

  public int indexOf(int, int);
    descriptor: (II)I

  public int lastIndexOf(int);
    descriptor: (I)I

  public int lastIndexOf(int, int);
    descriptor: (II)I

  public int indexOf(java.lang.String);
    descriptor: (Ljava/lang/String;)I

  public int indexOf(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)I

  public int lastIndexOf(java.lang.String);
    descriptor: (Ljava/lang/String;)I

  public int lastIndexOf(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)I

  public java.lang.String substring(int);
    descriptor: (I)Ljava/lang/String;

  public java.lang.String substring(int, int);
    descriptor: (II)Ljava/lang/String;

  public java.lang.CharSequence subSequence(int, int);
    descriptor: (II)Ljava/lang/CharSequence;

  public native java.lang.String concat(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;

  public java.lang.String replace(char, char);
    descriptor: (CC)Ljava/lang/String;

  public boolean matches(java.lang.String);
    descriptor: (Ljava/lang/String;)Z

  public boolean contains(java.lang.CharSequence);
    descriptor: (Ljava/lang/CharSequence;)Z

  public java.lang.String replaceFirst(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;

  public java.lang.String replaceAll(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;

  public java.lang.String replace(java.lang.CharSequence, java.lang.CharSequence);
    descriptor: (Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;

  public java.lang.String[] split(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)[Ljava/lang/String;

  public java.lang.String[] split(java.lang.String);
    descriptor: (Ljava/lang/String;)[Ljava/lang/String;

  public java.lang.String toLowerCase(java.util.Locale);
    descriptor: (Ljava/util/Locale;)Ljava/lang/String;

  public java.lang.String toLowerCase();
    descriptor: ()Ljava/lang/String;

  public java.lang.String toUpperCase(java.util.Locale);
    descriptor: (Ljava/util/Locale;)Ljava/lang/String;

  public java.lang.String toUpperCase();
    descriptor: ()Ljava/lang/String;

  public java.lang.String trim();
    descriptor: ()Ljava/lang/String;

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;

  public native char[] toCharArray();
    descriptor: ()[C

  public static java.lang.String format(java.lang.String, java.lang.Object...);
    descriptor: (Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

  public static java.lang.String format(java.util.Locale, java.lang.String, java.lang.Object...);
    descriptor: (Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

  public static java.lang.String valueOf(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/String;

  public static java.lang.String valueOf(char[]);
    descriptor: ([C)Ljava/lang/String;

  public static java.lang.String valueOf(char[], int, int);
    descriptor: ([CII)Ljava/lang/String;

  public static java.lang.String copyValueOf(char[], int, int);
    descriptor: ([CII)Ljava/lang/String;

  public static java.lang.String copyValueOf(char[]);
    descriptor: ([C)Ljava/lang/String;

  public static java.lang.String valueOf(boolean);
    descriptor: (Z)Ljava/lang/String;

  public static java.lang.String valueOf(char);
    descriptor: (C)Ljava/lang/String;

  public static java.lang.String valueOf(int);
    descriptor: (I)Ljava/lang/String;

  public static java.lang.String valueOf(long);
    descriptor: (J)Ljava/lang/String;

  public static java.lang.String valueOf(float);
    descriptor: (F)Ljava/lang/String;

  public static java.lang.String valueOf(double);
    descriptor: (D)Ljava/lang/String;

  public native java.lang.String intern();
    descriptor: ()Ljava/lang/String;

  public int compareTo(java.lang.Object);
    descriptor: (Ljava/lang/Object;)I

  static {};
    descriptor: ()V
}