Exporting to Runnable jar with extra native code libraries in eclipse
Solution 1
Add a script containing something like that:
#!/bin/bash
java -Djava.library.path=project_lib/native/ -jar project_lib/jri.jar
I export some java projects that way.
Solution 2
This is relatively hard to implement. The solutions I have seen involve extracting the native libraries in the JAR to an OS temp directory and then loading it. I would go for an integrated solution for that. One Jar and Java Class Loader support it, and on the second page you will find links to similar tools.
Solution 3
You can put the libraries inside your jar:
Export...
Java > Runnable JAR file
Package required libraries into generated Jar
Finish
I always export this way. I don't know if it will work in your case, but worth a try.
Edit:
See these links:
- Instalation, setup and setting environment properly
- What to do when getting Cannot find JRI native library!
My guess is that this have something to do with LD_LIBRARY_PATH not correctly been set. Or the file wich it is searching for isn't in the path listed.
Comments
-
Julio Diaz almost 2 years
I am having trouble exporting my java project from eclipse as a jar executable file. My java project uses an external library (its called jri). I have exported the jri.jar file and set the library path for its native library in eclipse, and it works great in development in eclipse. However, when I export it as an executable jar file I get the following error:
Cannot find JRI native library! Please make sure that the JRI native library is in a directory listed in java.library.path.
I have placed a folder called lib in the same directory as my project's jar; this lib folder contains jri's native library. jri's native library is not in one file but in a folder. This is the same setup I have in eclipse.
The way I am exporting my project in eclipse is
Export... Java > Runnable JAR file Copy required libraries into a sub folder next to the generated Jar Finish
And my folder is organized like this
folder project project.jar project_lib jri.jar jri native library folder
The MANIFEST.MF of my project.jar is:
Manifest-Version: 1.0 Class-Path: . project_lib/jri.jar Main-Class: index
What I want to achieve is to give another person a folder including project.jar and anything else needed so she/he can run it without needing to install anything else. Thanks so much
-
Julio Diaz over 12 yearsI have tried that but it doesnt work, remember that the native libraries for the external package is in a folder and the java.library.path need to have access to it.
-
ChrisJ over 12 yearsYou're right, as far as I know, Java cannot load JNI libraries (.dll, .so, etc.) from a JAR file. The solutions you mention extract the relevant files at runtime, so that Java can load them.