Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Exporting to Runnable jar with extra native code libraries in eclipse

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

like image 870
Julio Diaz Avatar asked Jan 11 '12 00:01

Julio Diaz


3 Answers

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.

like image 106
Ortwin Angermeier Avatar answered Nov 08 '22 14:11

Ortwin Angermeier


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.

like image 22
CptHindsight Avatar answered Nov 08 '22 15:11

CptHindsight


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.

like image 20
falsarella Avatar answered Nov 08 '22 13:11

falsarella