Library not found: tibrvj
Solution 1
I had the same problem, and I fixed it doing the following:
- File tibrvj.jar is present in the classpath of my application
- File tibrvj.dll is present via java library path. This file is usually located at bin directory in Tibco Rendezvous home directory (e.g. C:/tibco/tibrv/8.2/bin)
- The installed java version is compatible with the installed tibco version.
My environment is:
- Windows 7, 64bits
- Tibco Rendezvous 8.2, 64bits
- JDK 1.6u29, 64bits
Before, I had installed a JDK 1.6u17, for a i586 processor and when I tried to load the library using:
System.loadLibrary("tibrvj");
I got this error:
Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\TIBCO\tibrv\8.2\bin\tibrvj.dll: Can't load AMD 64-bit .dll on a IA 32-bit platform
It gave me the clue to instal the correct java version.
Solution 2
Have you loaded the library using System.loadLibrary("tibrvj")? Have you added it to java.library.path?
Solution 3
Use :
java -Djava.library.path=/opt/tibco/tibrv/lib -cp {}.jar
LD_LIBRARY_PATH=/opt/tibco/tibrv/lib export LD_LIBRARY_PATH
Then **System.loadLibrary("tibrvj");**
Comments
-
jasonline almost 2 years
I'm running a Java application on a Linux server that uses Tibco RV and I get the following error:
TibrvException[error=901,message=Library not found: tibrvj]
What is causing this problem?
I have already added lib path containing
*.so
intoLD_LIBRARY_PATH
but still the same result.UPDATE:
Currently, I have
<MyApp>/libs/tibrvj.jar
added intoclasspath
. The tibrvj.jar was copied from Windows environment to the Linux box where I'm running my application. I removed this from the classpath and added another reference<TibcoDirectory>/libs/tibrvj.jar
and it FIXED the problem. They have different sizes with the previous file and there's probably a difference between the one copied from Windows and the one currently in the Linux box. Can someone explain why is this so? -
jasonline about 13 yearsI loaded it using Tibrv.open(Tibrv.IMPL_NATIVE).
-
DaveH about 13 yearsNot sure what you mean there - I believe that in order to use a native library you have to load in once into the JVM so that the classloader knows about it. Typically I'd do this in a static initializer. Is the Tibrv.open() statement you mention above in your java?
-
DaveH about 13 yearsAnd what is Tibrv? One of your own objects or something supplied by Tivco?
-
jasonline about 13 yearsTibrv is a class provided by Tibco, as in com.tibco.tibrv.Tibrv.
-
AntuanSoft over 5 yearsThe keys are 1 - Right Java version, 2 - tibrvj.jar in classpath 3- tibrvj.dll in environment variable PATH. You can do it adding to PATH [TIBCO_PATH]\bin