You can open this sample inside an IDE using the IntelliJ native importer or Eclipse Buildship.

This sample shows how a JVM application in Gradle can use a JNI library. The library has no dependencies, and the build has a minimal configuration.

In this sample, we are using a JNI library implemented in Java and C++ within an application implemented in Java; however, this applies to other JVM and native languages as well.

build.gradle
plugins {
	id 'java'
	id 'application'
}

application {
	mainClassName = 'com.example.app.Main'
}

dependencies {
	implementation project(':jni-library')
}
build.gradle.kts
plugins {
	id("java")
	id("application")
}

application {
	mainClassName = "com.example.app.Main"
}

dependencies {
	implementation(project(":jni-library"))
}

To build the library:

$ ./gradlew run

> Task :run
Bonjour, World!

BUILD SUCCESSFUL
6 actionable tasks: 6 executed

It’s also possible to build a distribution archive:

$ ./gradlew :distZip

BUILD SUCCESSFUL
8 actionable tasks: 3 executed, 5 up-to-date
$ ls ./build/distributions/*.zip
./build/distributions/jvm-application-with-jni-library.zip

It is possible to use the distribution on a system where the code wasn’t built, given the native component of the JNI library is supported on the platform:

$ mv ./build/distributions/jvm-application-with-jni-library.zip .
$ ./gradlew clean

BUILD SUCCESSFUL
2 actionable tasks: 2 executed
$ unzip jvm-application-with-jni-library.zip -d .
Archive:  /Users/daniel/jvm-application-with-jni-library.zip
   creating: /Users/daniel/jvm-application-with-jni-library/
   creating: /Users/daniel/jvm-application-with-jni-library/lib/
  inflating: /Users/daniel/jvm-application-with-jni-library/lib/jvm-application-with-jni-library.jar
  inflating: /Users/daniel/jvm-application-with-jni-library/lib/jni-library.jar
   creating: /Users/daniel/jvm-application-with-jni-library/bin/
  inflating: /Users/daniel/jvm-application-with-jni-library/bin/jvm-application-with-jni-library
  inflating: /Users/daniel/jvm-application-with-jni-library/bin/jvm-application-with-jni-library.bat
$ ./jvm-application-with-jni-library/bin/jvm-application-with-jni-library
Bonjour, World!

For more information, see JNI Library Plugin, C++ Language Plugin and Application Plugin reference chapters.