gpt4 book ai didi

java - C 和 Java 通过 Jni

转载 作者:太空宇宙 更新时间:2023-11-04 05:21:24 24 4
gpt4 key购买 nike

我正在尝试从 S 调用 java 代码。此方法调用:


cls = (* env) -> FindClass (env, "org / libsdl / app / SDLActivity");
mid = (* env) -> GetStaticMethodID (env, cls, "play",
"([Ljava / lang / String;) V");
(* env) -> CallVoidMethod (env, cls, mid);

Java 方法:


public static void play () {
track.write (bytes, 0, bytes.length);
}

导致这个错误:

03-25 18:17:32.313: WARN/dalvikvm (655): JNI 警告:调用 JNI 方法时引发异常03-25 18:17:32.313:警告/dalvikvm (655):在 Lorg/libsdl/app/SDLActivity 中;。 main (ILjava/lang/String; [I (GetByteArrayElements)03-25 18:17:32.313: WARN/dalvikvm (655): 未决异常是:03-25 18:17:32.323: INFO/dalvikvm (655): Ljava/lang/NoSuchMethodError;: play

找到类,但找不到方法 有什么问题?如何决定?

最佳答案

问题是方法签名字符串不正确。对于没有参数返回 void 的方法,方法签名字符串是 "()V"

另一点是有效的类型或方法签名字符串中永远不会有空格。因此,采用 String 参数并返回 void 的方法将是

    "([Ljava/lang/String;)V"

而不是

    "([Ljava / lang / String;) V"

关于java - C 和 Java 通过 Jni,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5442530/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com