Once packaged, RJNI is designed to run as one extra step after your normal build, against an already-built JAR. It does not otherwise change your build process:
rjni protect --in build/libs/app.jar --out build/libs/app-protected.jar
The output is a drop-in replacement JAR: same entry point, same public behaviour. It runs on an ordinary JVM. Nothing about how you deploy or launch it changes.
Three artefacts alongside the protected JAR itself, written on every run:
<output>.rename-map.txt, every renamed class, old name to new, for your own reference. Not read by RJNI itself.<output>.protection-report.txt, a grouped, human-readable summary of every pass applied: methods nativized, methods excluded and why, classes renamed, classes excluded and why.Read How it works for the six-stage pipeline, then Protection passes for what each stage does to your code. If you're evaluating RJNI against a specific project, start with Compatibility and Trial mode.