如何强制Java 6 Applet仅使用Java 1.6环境运行?
解决Java 6 Applet强制指定JRE 1.6运行的问题
背景
维护三款老旧Applet:两款Java 3 Applet可正常运行,一款2010年开发的Java 6 Applet无法在JRE 7/8环境下运行,且因部分源码缺失无法重新编译,需配置嵌入参数强制其使用JRE 1.6运行,甚至引导浏览器临时下载对应版本JRE。
可正常运行的Java 3 Applet嵌入代码
<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" WIDTH = 100% HEIGHT = 100% ALIGN = "baseline" codebase="http://java.sun.com/products/plugin/1.3/jinstall-13-win32.cab#Version=1,3,0,0"> <PARAM NAME = CODE VALUE = "ODBSServerGUI\OLIVE.class" > <PARAM NAME = ARCHIVE VALUE = "olive.jar" > <PARAM NAME="type" VALUE="application/x-java-applet;jpi-version=1.3.0_02"> <PARAM NAME="scriptable" VALUE="false"> <PARAM NAME = "port" VALUE ="20285"> <PARAM NAME = "host" VALUE="MOGH"> </OBJECT>
当前Java 6 Applet嵌入代码(无法在JRE 7/8运行)
<object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" width="100%" height="100%" align= "baseline"> <param name="code" value="SiteCommApplet.TestTool.class" > <param name="archive" value="/RMCommandCentre/dist/OTTApp.jar"> <param name="username" value="<?php echo $userdetails['User']['name'];?>"> <param name="connid" value="<?php echo $dbconnection['Dbconnection']['id'];?>" > </object>
已尝试但失败的配置
<object classid="clsid: CAFEEFAC-0016-0025-FFFF-ABCDEFFEDCBA" width="100%" height="100%" align= "baseline" codebase="http://java.sun.com/update/1.6.0/jinstall-6u25-windows-i586.cab#Version=1,6,25,0"> <param name="code" value="SiteCommApplet.TestTool.class" > <param name="archive" value="/RMCommandCentre/dist/OTTApp.jar"> <PARAM NAME="type" VALUE="application/x-java-applet;jpi-version=1.6.0"> <param name="username" value="<?php echo $userdetails['User']['name'];?>"> <param name="connid" value="<?php echo $dbconnection['Dbconnection']['id'];?>" > </object>
可行解决方案
修正后的嵌入代码
<object classid="clsid:CAFEEFAC-0016-0025-FFFF-ABCDEFFEDCBA" width="100%" height="100%" align="baseline" codebase="http://java.sun.com/update/1.6.0/jinstall-6u25-windows-i586.cab#Version=1,6,0,25"> <param name="code" value="SiteCommApplet.TestTool.class"> <param name="archive" value="/RMCommandCentre/dist/OTTApp.jar"> <param name="type" value="application/x-java-applet;jpi-version=1.6.0_25"> <param name="java_version" value="1.6.0_25"> <param name="scriptable" value="false"> <param name="username" value="<?php echo $userdetails['User']['name'];?>"> <param name="connid" value="<?php echo $dbconnection['Dbconnection']['id'];?>"> <!-- 非IE浏览器兼容配置 --> <embed type="application/x-java-applet;jpi-version=1.6.0_25" code="SiteCommApplet.TestTool.class" archive="/RMCommandCentre/dist/OTTApp.jar" width="100%" height="100%" scriptable="false" username="<?php echo $userdetails['User']['name'];?>" connid="<?php echo $dbconnection['Dbconnection']['id'];?>" pluginspage="http://www.java.com/en/download/manual.jsp"> </embed> </object>
关键修正点
- 修正ClassID格式:移除原配置中classid内的空格,确保
CAFEEFAC-0016-0025-FFFF-ABCDEFFEDCBA无多余空格,该ID对应JRE 1.6.0_25版本。 - 规范Codebase版本号:将版本号调整为
1,6,0,25(逗号分隔,对应1.6.0_25),与JRE版本严格匹配。 - 明确版本参数:同时指定
type和java_version参数的完整版本号1.6.0_25,避免浏览器匹配高版本兼容模式。 - 添加跨浏览器支持:补充
<embed>标签适配非IE浏览器,通过pluginspage引导用户下载对应JRE版本。 - 统一安全参数:添加
scriptable="false",与Java 3 Applet配置保持一致,降低脚本交互风险。
额外注意事项
- 若官方JRE安装包链接失效,需在内部服务器托管JRE 1.6u25安装包,并修改
codebase和pluginspage为内部地址。 - 需配置浏览器安全设置,允许该站点运行未签名Applet(若Jar无签名),或将站点添加至信任列表。
- 确保客户端系统未禁用JRE 1.6,部分系统会自动禁用老旧版本JRE,需手动启用。
内容的提问来源于stack exchange,提问作者Adrian
相关产品推荐
相关产品推荐

