有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

C++ java。lang.NoSuchMethodError:没有静态方法,仅适用于发布版本,不适用于调试

<> Kotlin函数在从C++加载时得到了一个^ {< CD1}},但它只在运行<强>颤动释放< /强>时发生。在调试中,它可以正常工作,没有任何错误

03-05 15:40:16.174  8799  8799 F zygote64: thread.cc:2036] No pending exception expected: java.lang.NoSuchMethodError: no static method "Lcom/myapp/flutter_app/JNI;.loadWavAsset(Ljava/lang/String;Ljava/lang/String;F)Z"
03-05 15:40:16.174  8799  8799 F zygote64: thread.cc:2036]   at java.lang.String java.lang.Runtime.nativeLoad(java.lang.String, java.lang.ClassLoader, java.lang.String) (Runtime.java:-2)
03-05 15:40:16.174  8799  8799 F zygote64: thread.cc:2036]   at java.lang.String java.lang.Runtime.doLoad(java.lang.String, java.lang.ClassLoader) (Runtime.java:1099)
03-05 15:40:16.174  8799  8799 F zygote64: thread.cc:2036]   at void java.lang.Runtime.loadLibrary0(java.lang.ClassLoader, java.lang.String) (Runtime.java:1014)
03-05 15:40:16.174  8799  8799 F zygote64: thread.cc:2036]   at void java.lang.System.loadLibrary(java.lang.String) (System.java:1657)
03-05 15:40:16.174  8799  8799 F zygote64: thread.cc:2036]   at void com.myapp.flutter_app.MainActivity.<init>() (:-1)
03-05 15:40:16.174  8799  8799 F zygote64: thread.cc:2036]   at java.lang.Object java.lang.Class.newInstance() (Class.java:-2)
03-05 15:40:16.174  8799  8799 F zygote64: thread.cc:2036]   at 安卓.app.Activity 安卓.app.Instrumentation.newActivity(java.lang.ClassLoader, java.lang.String, 安卓.content.Intent) (Instrumentation.java:1195)

以下是kotlin文件:

package com.myapp.flutter_app

import 安卓.content.Context
//... other imports

class JNI(val _context: Context) {


    companion object {
        val TAG: String = "JNI.kt";

        lateinit var context: Context;

        @JvmStatic
        public fun loadWavAsset(player: String, assetPath: String, pan: Float): Boolean {
<>这里是C++如何加载:

    static void getStaticMethodAndCache(JNIEnv *env, jmethodID *cacheHere, jclass *javaClass, std::string methodName, std::string methodSignature)
    {
        *cacheHere = env->GetStaticMethodID(*javaClass, methodName.c_str(), methodSignature.c_str());
        assert(*cacheHere != NULL);
    }


    getStaticMethodAndCache(env, &loadWavAssetMethod, &JNIClass,
                                                     "loadWavAsset",
                                                     "(Ljava/lang/String;Ljava/lang/String;F)Z"

共 (0) 个答案