The recommended distribution model for Java applications is a jlinked runtime image [1], which supports including native libraries in the image.
[1]: Technically, this is the only distribution model because all Java runtimes as of JDK 9 are created with jlink, including the runtime included in the JDK (which many people use as-is), but I mean a custom runtime packaged with the application.