我试图从java包中调用一个rust库,作为其中的一部分,我在通过网络发送对象之前转换(序列化)它。
然而,我得到了以下错误。
expected `*mut jni::sys::_jobject`, found struct `jni::objects::JPrimitiveArray`
代码示例:
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())?)
}
我到底做错了什么?
尝试反序列化输入时出现类似问题。
一个二个一个一个
2条答案
按热度按时间7bsow1i61#
使用旧版本的jni解决了这个问题。
mcdcgff02#
使用
jni
crate的0.21.1版本,可以通过对env.byte_array_from_slice(...)
的结果调用.as_raw()
来修复第一个示例。第二个示例可以通过在
unsafe
块中调用JByteArray::from_raw(buffer.clone())
来修复。