Installing Mozilla for FreeBSD

Running FreeBSD on my workstation, I feel like I'm always behind the curve regarding web browsers. There are a plethora of browsers out there that run on Unix, but the only good ones seem to be Netscape/Mozilla. However, I'm still missing Java and Flash support.

Installing Mozilla is easy. The pre-compiled binary can usually be found on the installation CD. But how do I get Java and Flash support to work? There are a couple of incarnations of each, but I've tried them and they've still not worked. What gives?

So far

Okay. On my workstation, I'm running FreeBSD 5.1-RELEASE. I have installed mozilla 1.3.1 as a precompiled package. I've installed a few things relating to Java and Flash, including the new diablo precompiled binary package of Java. Things of note in my /var/db/pkg directory:

diablo-jdk-1.3.1.0
flashpluginwrapper-0.20021113
javavmwrapper-1.4
linux-flashplugin-5.0r51
linux-flashplugin-6.0r69
linux_base-7.1_4
mozilla-1.3.1,2

One source of confusion is that there seems to be two or three flash plugins. One is Macromedia's official Linux version, included on the FreeBSD presumably to be run under the Linux binary emulator. One is an open source clone, which I tried once and it crashed my browser every on every third or fourth mouse click. There is also a wrapper ... do I need it or not? Is it intended for any flash plugin, just the one I'm using, or just the one I'm not using?

There is a similar situation with Java. The FreeBSD folks recently released a precompiled binary package of the Java runtime. But there are four versions. I think I picked the right version, Diablo JDK. There is also a wrapper. Do I need it?

Java

Okay, I'm currently at the point where I get two error messages when I start mozilla:

LoadPlugin: failed to initialize shared library /usr/local/jdk1.3.1/jre/plugin/i386/ns600/libjavaplugin_oji.so [Cannot open "/usr/local/jdk1.3.1/jre/plugin/i386/ns600/libjavaplugin_oji.so"]
LoadPlugin: failed to initialize shared library /usr/local/diablo-jdk1.3.1/jre/plugin/i386/ns600/libjavaplugin_oji.so [/usr/local/diablo-jdk1.3.1/jre/plugin/i386/ns600/libjavaplugin_oji.so: Undefined symbol "_vt$17nsGetServiceByCID"]

I'm guessing that the first message isn't really a problem, since it does later find the library in the correct directory. The second message troubles me, though. It suggests to me, at the very least, that I am using the wrong version of something, as if they added a function for the version of Mozilla (or the wrapper) that I'm using, but it isn't available in this JRE.

Sure enough, the symbol is listed in the library as "undefined" (using nm -a to view it). That appears to mean it is external to the library, as if I need to find another library containing it. Let's look around ...

Oh, hmm. I recall now, that when I installed dialbo-jdk, it whined about some version of something not being the same. I should go find out what that was. Hmm, it was libiconv. I have 1.8, but diablo-jdk wants 1.9.1 ... but what would that have to do with it?

Another idea ... what if the external is supposed to be resolved within the browser itself?

Okay. I've found references to an altered version of that name all over the place. Instead of _vt$17nsGetServiceByCID, I see _ZTV17nsGetServiceByCID.