Question

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

Was it helpful?

Solution

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.

OTHER TIPS

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.

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:

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.

You know I had the similar problems

Could not extract native JNI library.

all above proposes can't help me. I couldn't stop and start gradle deamon by using follow command:

gradle --stop

I saw that gradle deamon still not stopped in my processes. That's why I kill it in my process and all will be fine :)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top