JAR进阶(下) - 编程入门网
我们试着打开class目录下的Applet1.html,IE报出一个出错信息:"load:test1.Applet1 cant''t be instantiated"。原因就是IE并不认识com.borland.jbcl.layout下面的类,而这里使用了XYLayout。.那么我们开始制作包含该XYLayout类的JAR来发布该applet。
还是通过new一个 Archive Builder开始, Archive type : Applet Project classes and resources : Include required classes and known resources Required classes and resources : add test1.Applet1.class 再点击next,就到了关键的一步,显示的JBCL和DataExpress都是applet所需要调用到的类,而且都是非jdk标准的,可以通过在这里选择后也包含到这个JAR文件中,供applet调用,默认的设定是Include required classes and all resources,即把applet所需要调用的类包含到JAR中,并且还包括这个类所中所包含的所有资源,而不管applet是否会用到。所以我们一般情况下只需要选择include required classes and known resources,资源文件要尽量少的包含到JAR中,以避免JAR文件过于庞大。记住是要让JBCL和DataExpress都选择为Include Deps。这样便很轻松的完成了相关类的添加工作。 完成后可以在test1.jpr的目录数下找到Applet,builder它得到的test1.jar目录数中可以看到多出了com.borland.jbcl.layout这样的目录,在这个目录下包含着XYLayout.class和XYConstraints.class两个类文件,这就是这个applet所需要调用的非标准类了,还是要记住,每当重新编译了这个applet,都要再编译一次JAR,这样才能让新生成的applet文件包含到JAR中。 接下来就只需要在有test1.jar这个文件的目录里面新建一个文件testjar.html : <applet code=test1.Applet1.class archive="test1.jar" width=350 height=200 > </applet> 需要提醒的是,如果在IE里面浏览该html,如果有过重新编译JAR并要把变化反应到网页上来,又没有关闭先前开的浏览该html的IE窗口,就要在地址栏里面按Ctrl+F5来刷新该html。 可以看到这样的应用真的给applet赋予了更强大的生命力,而且在jbuilder里面很容易的就实现了它。但是就applet的应用来讲,还是有个悬而未决的问题,很多朋友都知道,在applet里面不能添加进swing类,因为IE只是支持jdk1.0,而swing类是以 jdk1.1 轻型用户界面框架为基础的,不在IE的支持范围,那么自然也不能正常显示,现在问题是也不能用Jbuilder的Archive Builder来把applet所需要调用的swing类包含到JAR中。 但也不是没有办法,一个较为简单的办法是装jre(Java Runtime Environment ),但是这个办法的缺点是要让每一个要浏览该applet的机器都要安装jre。另一个办法是重新复制编译一次swing类,生成自己的类,这样就可以被JAR打包时所包含到了,当然这需要的较多的时间和精力,这里举一个较为简单的例子,如果在applet里使用Jbutton,那么先把jdk里面一个src.jar这个文件解压,再在目录javax,swing下,找到Jbutton.java文件,查看它的源码,并把所有涉及到的swing类都复制到一个目录下,改变每一个文件的package属性。再编译,通过了就说明找到的文件全了,没有通过就必须再找到,直到不再编译出错为止。最后从applet引用这个已经编译的class,而不再用swing。好像这个办法是笨了点,但对大家熟悉java是很有帮助的。 差不多JAR的用法可以说掌握到这样就可以了,当然还有更精彩的应用,如与数字签名结合可以突破以往对applet的限制,甚至可以访问本地硬盘,网络等等。如果大家对此感兴趣,我也会在稍后的文章中对数字签名和JAR的结合跟大家作一个较为详尽的探讨。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |