[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: concerning a lib that can't be found



Renato Serodio wrote:
> I've been experiencing some annoying behaviour on the part of my java
> applications. I've managed to track the problem to a file the java
> executable can't find. [...]
> 
> Calling either from the command line works a charm. Calling any from the
> menu does...
> 
> ...nothing; that is, the process is not started. On looking at
> .xsession-errors, we find the lines:
> java: error while loading shared libraries: libjli.so: cannot open
> shared object file: No such file or directory
> 
> Now, the responsible lives at:
> /usr/lib/j2sdk6.0-sun/jre/lib/i386/jli/libjli.so
> 
> 
> Here's where the fun starts. I made a debianized version of the current
> java1.6 snapshot, and installed that. In any case, version 1.5 was
> behaving the same way..
> 
> There's little around about this lib, but a post mentioned java should
> be able to find it without setting the LD_LIBRARY_PATH. "This is a job
> for... the java developers!"

For starters there is no libjli.so in Java SE 5.0.

I suspect that reason this works on the command line, but not in the menu,
is that you have set your path to include /usr/lib/j2sdk6.0-sun/bin but
that setting is not in effect at the time your window session is started.

There's a couple of workarounds

1. Give an explicit path to Java in the menu config, for example
   /usr/lib/j2sdk6.0-sun/bin/java
2. Add a (synthetic) jinfo entry for JDK 6
   Perhaps the easiest way to do this is to install Sun Java SE 5.0
   from unstable (apt-get -t unstable sun-java5-jre) and
   examine /usr/lib/jvm/.java-1.5.0-sun.jinfo
   You may find it easiest to move the JDK 6 tree to a similar location
   # mv /usr/lib/j2sdk6.0-sun /usr/lib/jvm/java-6-sun
   And then create an appropriate jinfo file
   /usr/lib/jvm/.java-6-sun.jinfo
   And finally choose this implementation
   # update-java-alternatives --set java-6-sun
   Now /usr/bin/java will be set to point to JDK 6 (and as that is
   part of the path before your window session starts it should be
   found without trouble).

In any case, no, you should not have to set LD_LIBRARY_PATH -- it
*is* a job for the java developers!

HTH,

--Tom

_____________________________________________________________________________
Tom.Marble@sun.com
Senior Java Performance Engineer                       Sun Microsystems, Inc.
http://blogs.sun.com/tmarble                What do you want from Java Libre?



Reply to: