Hello,
I've been trying to figure out why Java applets wouldn't work on my
system in Opera. (I'm using jre/jdk from [community], not openjdk6 from
[extra].) From what I've found out: you set up a "Java directory" in
Opera preferences (this path is then written to .opera/javapath.txt) and
Opera looks for libjava.so there. At the same time Opera also looks for
libjvm.so there (or it is the first place where Opera looks, more on
that bellow). The problem is that jre package contains libjava.so in
/opt/java/jre/lib/amd64/, while libjvm.so is in "server" subdirectory
(/opt/java/jre/lib/amd64/server). That causes Opera not to find it and
disable Java completely.
I ran strace and these are relevant lines to show where Opera tries to
find libjvm.so:
open("/opt/java/jre/lib/amd64/libjvm.so", O_RDONLY) = -1 ENOENT (No such
file or directory)
open("/usr/lib/opera/10.00/libjvm.so", O_RDONLY) = -1 ENOENT (No such
file or directory)
open("/opt/java/jre/lib/amd64/libjvm.so", O_RDONLY) = -1 ENOENT (No such
file or directory)
open("/opt/java/jre/lib/amd64//native_threads/libjvm.so", O_RDONLY) = -1
ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 107
open("/lib/libjvm.so", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/usr/lib/libjvm.so", O_RDONLY) = -1 ENOENT (No such file or
directory)
This lead me to an idea of creating symlink to
/opt/java/jre/lib/amd64/server/libjvm.so in /usr/lib/opera/10.00, which
worked and now I can see applets in Opera properly. Now the question is,
who's fault is it? Opera's? Jre's? And more importantly, can it be
solved in a way that doesn't require users to create symlinks as root?
Either opera package could create the aforementioned link, only that is
ugly for those not using jre package. Or jre package could create the
link into /opt/java/jre/lib/amd64/. Or maybe even move the files from
the "server" subdirectory to the upper directory (there are only three
of them and I have no idea why they are in such a subdirectory)?
Does anyone have a better idea? Perhaps adding
/opt/java/jre/lib/amd64/server/ to LD_LIBRARY_PATH inside the opera
shell script?
Ondřej
--
Cheers,
Ondřej Kučera