CentOS 5.5 下升级一些补丁之后,Mozilla Firefox3.6.7 被升级为 3.6.7 版本。Firefox 从 3.6 系列开始不再支持以前 OJI (Open Java Virtual Machine Integration)架构下的 Java 插件,需要使用Java 6 Updates 10 及以后提供的符合 NPAPI 标准的新版本浏览器插件。于是导致了Firefox3.6.7 不能加载 Java 插件从而不能使用 Applet 的问题。具体表现是,不能安装 Java 插件,不能执行浏览器页面里的 Applet。
【注】Applet 是一项很古老的 Java 应用,属于浏览器前端技术,与浏览器有直接关系,因为它是从Web服务器端下载到浏览器端后,在浏览器的安全沙盒内被执行的。
一个嵌入在 html 中的 applet 示例如下:
<APPLET code="HelloWorld.class" width=200 height=150></APPLET>
其中 HelloWorld.class 文件就是被编译后,包含 applet 二进制代码的文件。
applet被严格限制在浏览器安全沙盒内执行,不能与浏览器端的文件系统进行交互。但可以通过内置的socket接口与其它网络应用进行通信。
本文介绍如何在 Mozilla Firefox 3.6.7 版本下配置使用 Java 插件的问题。
实际上,CentOS 5.5 本身是自带 Java 环境的,在软件管理里配置启用后,运行命令 java -version,可以看到如下信息:
java version "1.6.0_0"
OpenJDK Runtime Environment (IcedTea6 1.6) (rhel-1.13.b16.el5-i386)
OpenJDK Client VM (build 14.0-b16, mixed mode)
但并不能与 Firefox3.6.7 一起工作。
于是,从 java 官网 上下载适用于 Linux 的 Java 版本下载(推荐 Version6 update21),选择 for Linux 自解压文件 jre-6u21-linux-i586.bin,文件大小 19.9MB。
下载完毕后,拷贝到 mozilla Firefox 的安装路径 /usr/lib/mozilla/plugins 下,加上可执行权限:
chmod +x jre-6u21-linux-i586.bin
然后执行它:
./jre-6u21-linux-i586.bin
自解压后,在当前目录下生成一个新目录 jre1.6.0_21,所有文件都包含在里边。
在 jre1.6.0_21/lib/i386/ 目录下可以找到一个 libnpjp2.so 文件,是和 Firefox 的 Java 插件有关的,在当前目录 /usr/lib/mozilla/plugins 下建立一个符号链接指向它:
ln -s jre1.6.0_21/lib/i386/libnpjp2.so
以上命令生成了符号链接 libnpjp2.so,指向(->)jre1.6.0_21/lib/i386/libnpjp2.so 文件。
OK,重新打开浏览器 Firefox,在“附加插件”下就能够看到插件“Java(TM) Plug-in 1.6.0_21”。浏览器右下角的一排快速按钮中的“Java”按钮也可以快速“Enable/Disable” Java 支持了(需要安装QuickJava插件)。在浏览器里打开 Webmin 网站,在Other 菜单下,可以打开 File Manager,管理网站上的文件了。File Manager 本身是用 Java 的 Applet 技术开发的。尽管 Applet 属于十分落后的技术,但有些小的应用还是需要 Firefox 支持 Java 插件。如果没有 Java 插件,会提示 Firefox 浏览器没有安装 Java 支持。
希望 CentOS 的后续版本里能自行解决这个问题。