如果次要运行带有swing的applet,总要安装一次jdk(从sun download的),有时机器里竟同时又好几个jdk,什么jbuilder的,weblogic的,bea server,从sun download的,等等,是不是太多了呢?机器有点乱,其实除了application server 以及其他的servlet(ejb)container,如果要单独运行jdk,会提高服务器的效率(其实小一点的server完全也可以用JBUILDER的自带的jdk,JBUILDER下面的tomcat就是很好的例子)
现在要求运行有swing的applet,要设定java plugin,和jre,当然你也可以选择安装jre 或jdk ,不过在你的机器上就要有多一个jdk目录了。既然JBUILDER已经带了jdk,那就应该好好利用,现手动设定如下(以juilder9为例):
1、拷贝juilder9下jdk1.4\jre\bin\jpicpl32.cpl,到系统的system32目录,保证控制面板里有java plugin的图标。
*.cpl是控制面板程序,放在系统目录,会在控制面板里有相应的图标。
2、在注册表下加上(我的juilder9装在E盘)
[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.4.1_02]
"MicroVersion"="1"
"RuntimeLib"="e:\\JBuilder9\\jdk1.4\\jre\\bin\\client\\jvm.dll"
"JavaHome"="e:\\JBuilder9\\jdk1.4\\jre"
和
[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Plug-in\1.4.1_02]
"UseJava2IExplorer"=dword:00000001
"JavaHome"="e:\\JBuilder9\\jdk1.4\\jre"
"HideSystemTrayIcon"=dword:00000000
保证控制面板里的java plugin双击能够运行。
3、注册NPJPI141_02.dll,在命令行输入 regsvr32 E:\JBuilder9\jdk1.4\jre\bin\NPJPI141_02.dll 保证NPJPI141_02.dll 注册成功。
NPJPI141_02.dll 是一个COM组件,包含三个COM对象,分别为Java Plug-in 1.4.1_02 <applet> 转向器 和相应Java Runtime Environment 1.4.1_02链接器,classid分别为8AD9C840-044E-11D1-B3E9-00805F499D93,CAFEEFAC-0014-0001-0002-ABCDEFFEDCBA,CAFEEFAC-0014-0001-0002-ABCDEFFEDCBB
它同通过提供一组com接口使得ie在浏览带有applet的页面时,原来是通过微软的java虚拟机(在system32目录的一个msjava.dll文件),重新转向到sun 的jre环境。
4、因为NPJPI141_02.dll的注册过程,在注册表的相应位置没有正确的设置(NPJPI141_02.dll在注册表的注册文件名为NPJAVA141_02.dll,这可就是最大的错误),所以最后还要手动的修改注册表。
[HKEY_CLASSES_ROOT\CLSID\{8AD9C840-044E-11D1-B3E9-00805F499D93}\InprocServer32]
@="E:\\JBuilder9\\jdk1.4\\jre\\bin\\npjpi141_02.dll"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{8AD9C840-044E-11D1-B3E9-00805F499D93}\InprocServer32]
@="E:\\JBuilder9\\jdk1.4\\jre\\bin\\npjpi141_02.dll"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{CAFEEFAC-0014-0001-0002-ABCDEFFEDCBA}\InprocServer32]
@="E:\\JBuilder9\\jdk1.4\\jre\\bin\\NPJPI141_02.dll"
[HKEY_CLASSES_ROOT\CLSID\{CAFEEFAC-0014-0001-0002-ABCDEFFEDCBA}\InprocServer32]
@="E:\\JBuilder9\\jdk1.4\\jre\\bin\\NPJPI141_02.dll"
[HKEY_CLASSES_ROOT\CLSID\{CAFEEFAC-0014-0001-0002-ABCDEFFEDCBB}\InprocServer32]
@="E:\\JBuilder9\\jdk1.4\\jre\\bin\\NPJPI141_02.dll"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{CAFEEFAC-0014-0001-0002-ABCDEFFEDCBB}\InprocServer32]
@="E:\\JBuilder9\\jdk1.4\\jre\\bin\\NPJPI141_02.dll"
都是文件名称错误,修改NPJPI141_02.dll包含的三个com对象指向正确的文件名。
5、修改msjava.dll转向SUN 的JRE环境。
[HKEY_CLASSES_ROOT\CLSID\{08B0E5C0-4FCB-11CF-AAA5-00401C608501}\TreatAs]
@="{CAFEEFAC-0014-0001-0002-ABCDEFFEDCBB}"
classid为08B0E5C0-4FCB-11CF-AAA5-00401C608501的com对象被包含在msjava.dll里。是ms java 虚拟机的一部分。
6、最后一步可做可不做,没有的话好像也可以运行。
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components\{08B0E5C0-4FCB-11CF-AAA5-00401C608500}]
"KeyFileName"="E:\\JBuilder9\\jdk1.4\\jre\\bin\\ActPanel.dll"
运行控制面板里的java plugin程序,进行设定,发现ie的选项里详细设定也有了用sun 虚拟机代替ms 的虚拟机的选项。运行swing的applet 和awt的applet 均可实现,任务栏也出现了期待已久咖啡图标,applet 能正常显示。
全文完