-
Notifications
You must be signed in to change notification settings - Fork 3.7k
Open
Description
比如Java代码StnLogic里面的: /** * 停止并清除所有未完成任务并重新初始化, 重新设置encoder version */ public static native void resetAndInitEncoderVersion(int packerEncoderVersion);
与
/*
* Class: com_tencent_mars_stn_StnLogic_Java2C
* Method: resetAndInitEncoderVersion
* Signature: (I)V
*/
DEFINE_FIND_STATIC_METHOD(KJava2C_resetAndInitEncoderVersion, KNetJava2C, "resetAndInitEncoderVersion", "(ILjava/lang/String;)V")
JNIEXPORT void JNICALL Java_com_tencent_mars_stn_StnLogic_resetAndInitEncoderVersion(JNIEnv* _env,
jclass clz,
jint _packer_encoder_version,
jstring _packer_encoder_name) {
std::string packer_encoder_name = (NULL == _packer_encoder_name ? "" : ScopedJstring(_env, _packer_encoder_name).GetChar());
ResetAndInitEncoderVersion(_packer_encoder_version, packer_encoder_name);
}
方法签名对不上
还有java里面Task类没有clientSequenceId,对应的c++代码会去拿这个字段,导致运行crash
static void JniStartTask(JNIEnv* env, jobject instance, jobject _task) {
xverbose_function();
auto stn_manager_cpp = jnicat::JniObjectWrapper<StnManager>::object(env, instance);
// get the field value of the netcmd
jint taskid = JNU_GetField(env, _task, "taskID", "I").i;
jint cmdid = JNU_GetField(env, _task, "cmdID", "I").i;
jint channel_select = JNU_GetField(env, _task, "channelSelect", "I").i;
jobject hostlist = JNU_GetField(env, _task, "shortLinkHostList", "Ljava/util/ArrayList;").l;
jstring cgi = (jstring)JNU_GetField(env, _task, "cgi", "Ljava/lang/String;").l;
jboolean send_only = JNU_GetField(env, _task, "sendOnly", "Z").z;
jboolean need_authed = JNU_GetField(env, _task, "needAuthed", "Z").z;
jboolean limit_flow = JNU_GetField(env, _task, "limitFlow", "Z").z;
jboolean limit_frequency = JNU_GetField(env, _task, "limitFrequency", "Z").z;
jint channel_strategy = JNU_GetField(env, _task, "channelStrategy", "I").i;
jboolean network_status_sensitive = JNU_GetField(env, _task, "networkStatusSensitive", "Z").z;
jint priority = JNU_GetField(env, _task, "priority", "I").i;
jint retrycount = JNU_GetField(env, _task, "retryCount", "I").i;
jint server_process_cost = JNU_GetField(env, _task, "serverProcessCost", "I").i;
jint total_timetout = JNU_GetField(env, _task, "totalTimeout", "I").i;
jstring report_arg = (jstring)JNU_GetField(env, _task, "reportArg", "Ljava/lang/String;").l;
jboolean long_polling = JNU_GetField(env, _task, "longPolling", "Z").z;
jint long_polling_timeout = JNU_GetField(env, _task, "longPollingTimeout", "I").i;
jobject oHeaders = JNU_GetField(env, _task, "headers", "Ljava/util/Map;").l;
std::map<std::string, std::string> headers = JNU_JObject2Map(env, oHeaders);
jint client_sequence_id = JNU_GetField(env, _task, "clientSequenceId", "I").i;
jobject extraInfo = JNU_GetField(env, _task, "extraInfo", "Ljava/util/Map;").l;
std::map<std::string, std::string> extra_info = JNU_JObject2Map(env, extraInfo);
Metadata
Metadata
Assignees
Labels
No labels