1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
Module: **`bindings/java/rust-data-processing-jvm/`**.
Release **`rdp_jvm_sys`**:
```bash
cargo build --release --manifest-path bindings/jvm-sys/Cargo.toml
```
**Linux / macOS**
```bash
export RDP_JVM_SYS="$(pwd)/bindings/jvm-sys/target/release/librdp_jvm_sys.so"
cd bindings/java/rust-data-processing-jvm
./gradlew check --no-daemon
```
**Windows (PowerShell)**
```powershell
$cargoDll = Resolve-Path .\bindings\jvm-sys\target\release\rdp_jvm_sys.dll
$env:RDP_JVM_SYS = $cargoDll.Path
cd bindings/java/rust-data-processing-jvm
.\gradlew.bat check --no-daemon
```
**JDK notes:** Gradle **9.2.1** wrapper runs on JDK **21+**. The build uses **`--release 21`** on JDK **21–23** and adds **`--enable-preview`** so **`java.lang.foreign`** compiles on **JDK 21** (FFM preview there). From **JDK 24** onward the project matches the runtime JDK major for **`release`** and still passes **`--enable-preview`** (harmless when unused).
Tests always append **`--enable-preview`** and **`--enable-native-access=ALL-UNNAMED`**.
After **`./gradlew publishToMavenLocal`**:
**Gradle (Kotlin DSL)**
```kotlin
repositories { mavenLocal() }
dependencies {
}
```
Use the exact version from **`bindings/java/VERSION`**.
**Maven**
```xml