参考资料:
https://docs.rs/jni/latest/jni/
https://github.com/jni-rs/jni-rs/tree/master/example
首先,创建一个 HelloWorld.java 文件
class HelloWorld {
    private static native String hello(String input);
    static {
        System.loadLibrary("mylib");
    }
    public static void main(String[] args) {
        String output = HelloWorld.hello("josh");
        System.out.println(output);
    }
}
编译这个文件,并生成 .h 头文件
javac -h . HelloWorld.java 或者用全路径 /usr/lib/jvm/java-11-openjdk-amd64/bin/javac HelloWorld.java -h .
可以看到 生成了一个HelloWorld.h文件
3. 创建rust 库
cargo --lib new mylib
4. 编辑Cargo.toml
... [dependencies] jni = "*" [lib] crate_type = ["cdylib"]
5. 创建 mylib/src/lib.rs
use jni::JNIEnv;
use jni::objects::{JClass, JString};
use jni::sys::jstring;
#[no_mangle]
pub extern "system" fn Java_HelloWorld_hello(env: JNIEnv,
                                             _: JClass,
                                             input: JString)
                                             -> jstring {
    let input: String = env.get_string(input).expect("Couldn't get java string!").into();
    let output = env.new_string(format!("Hello, {}!", input))
        .expect("Couldn't create java string!");
    output.into_inner()
}
6. 编译运行
cd mylib cargo build cd .. LD_LIBRARY_PATH=/path/to/mylib/target/debug java HelloWorld 或者 java -Djava.library.path=mylib/target/debug/ HelloWorld