5

I have a Java program making some JNI calls to a native library ("mylib.so"). Whenever I want to run this program, from the command line, I must set java.library.path to the location of my library as such:

java -Djava.library.path=/var/natives/ -classpath MyPackage.jar MyPackage.MyClass arg1 arg2

I'm wondering if there are any alternatives so I do not have to set it with the -D option everytime I run my program.

I have tried adding /var/natives/ to my $PATH variable, but it still complains that it cannot find the library if I do not explicitly set it with -D.

Do I have any other options?

2
  • 1
    Just put the entire command in a .sh file. Commented May 26, 2011 at 20:39
  • @BalusC, if you want to post that as an answer I'll accept it. Commented May 27, 2011 at 15:01

4 Answers 4

2

Just put the entire command in a .sh file to save yourself from repeating it everytime.

Sign up to request clarification or add additional context in comments.

Comments

1

Instead of using System.loadLibrary("mylib"), use System.load("/var/natives/mylib.so").

Or, you could define a custom class loader for the class and override the ClassLoader.findLibrary(String) method.

Comments

0

One place you can put it (which admittedly may be suboptimal) is in the [JRE]/lib/i386 directory (or [JRE]/lib/x64 or whatever it is called in a 64-bit Java installation).

Also, have you tried putting /var/natives in LD_LIBRARY_PATH?

Comments

0

Another possibility is creating your own variable with the switches in it. For example:

COMPILE="-Djava.library.path=/var/natives/ -classpath /var/packages/MyPackage.jar"

Then run the command like:

java $COMPILE MyPackage.MyClass arg1 arg2 arg3

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.