jobject convert(JNIEnv* env, const TaskInfo& task) { string data; task.SerializeToString(&data); // byte[] data = ..; jbyteArray jdata = env->NewByteArray(data.size()); env->SetByteArrayRegion(jdata, 0, data.size(), (jbyte*) data.data()); // TaskInfo task = TaskInfo.parseFrom(data); jclass clazz = FindMesosClass(env, "org/apache/mesos/Protos$TaskInfo"); jmethodID parseFrom = env->GetStaticMethodID(clazz, "parseFrom", "([B)Lorg/apache/mesos/Protos$TaskInfo;"); jobject jtask = env->CallStaticObjectMethod(clazz, parseFrom, jdata); return jtask; }