#java #jni

javavm

一个简单的crate,全局缓存JavaVM结构,并为任何线程返回有效的JNIEnv,提供自动线程附加和分离。

3个版本

0.1.2 2021年10月24日
0.1.1 2021年10月23日
0.1.0 2021年10月23日

#57 in #jni


用于 mediacodec

MIT/Apache

6KB
82

JavaVM

一个简单的crate,全局缓存JavaVM结构,并为任何线程返回有效的JNIEnv,提供自动线程附加和分离。

有关更多详细信息,请参阅crate文档


lib.rs:

这个crate帮助“存储”和“检索”当前Java虚拟机(JVM)以安全的方式,并提供帮助您获取当前线程上JNIEnv的例程。这样,您只需设置一次JVM,当您需要时再请求所需的JNIEnv。附加和从JavaVM分离应留给库,这可不是您的事情 :) 注意,在您使用此库中的函数之前,必须先设置一次JavaVM。不这样做将使您的程序崩溃!

示例

javavm::set_jvm(None); // Pass a valid JavaVM instance here (hint: use the jni crate, which this crate already depends on)
// ... Other code goes here

let handle = std::thread::spawn(|| {
    // When you need the JNIEnv
    let _ = javavm::get_env();
});

依赖项

~1.4–2.7MB
~46K SLoC