I'm trying to call a rust library from java package and as part of that, i'm converting (serializing) an object before sending it over the wire.
How ever, I'm getting the following error.
expected `*mut jni::sys::_jobject`, found struct `jni::objects::JPrimitiveArray`
code sample:
fn serialize_response<T: Message>(
env: &JNIEnv,
value: T,
) -> Result<jbyteArray, ClientJniError> {
let serialized = value.write_to_bytes()?;
Ok(env.byte_array_from_slice(serialized.as_slice())?)
}
What am I doing wrong here?
Similar problem, while trying to deserialize the input.
fn deserialize_from_jni<T: Message>(env: &JNIEnv, buffer: &jbyteArray) -> Result<T, ClientJniError> {
let buffer_deserialized =
Message::parse_from_bytes(&*env.convert_byte_array(buffer)?.as_slice())?;
Ok(buffer_deserialized)
}
Message::parse_from_bytes(&*env.convert_byte_array(buffer)?.as_slice())?;
------------------ ^^^^^^ the trait `std::convert::AsRef<jni::objects::JPrimitiveArray<'_, i8>>` is not implemented for `*mut jni::sys::_jobject`
|
required by a bound introduced by this call
Using an older version of jni fixed the issue.