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