Skip to content

Latest commit

 

History

History
101 lines (61 loc) · 3.43 KB

README.md

File metadata and controls

101 lines (61 loc) · 3.43 KB

rust-java samples

Chinese version, 中文版

desc

This repository contains sample Rust programs that call Java methods, and Java classes that call Rust methods.

sample list

  1. sample000, call Rust method from Java

  2. sample001, convert Java primitive types to bytes in Rust

  3. sample002, accept a Java object in Rust, and callback to Java

  4. sample003, reverse Java bytes

  5. sample004, access Java DirectBuffer in Rust

  6. sample005, access Java primitive array in Rust

  7. sample006, create Java object in Rust

  8. sample007, set a field to Java object in Rust

  9. sample008, load Java class in Rust

    s008_class_buf.rs is generated by java2u8vec.sh

  10. sample009, register Java method dynamically in Rust

more ..

build

cargo build --release

cargo will generate .so in target/release, and call build_java.sh to build .jar, which contains .so in resources folder.

how-to

  1. call Java each JUnit test in IDE
  2. call Java JUnit test suite in IDE

Note: need to setup JVM args: -DsampleLib=<path to lib>

or

  1. execute Java each JUnit test in console

    gradle test --tests HelloWorldTest
  2. execute Java each JUnit test suite in console

    gradle test --tests SamplesSuite

The JUnit report will be generated.

thanks

Thanks to metaworm(rust-java-demo). This article (url1/url2) is the most effective and detailed for learning how to call JNI through Rust.