中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Java > 用户界面
Applet与我的恶梦
作者:未知 时间:2005-07-24 21:16 出处:JR 责编:chinaitpower
              摘要:Applet与我的恶梦
  前不久,我为呢一个不大不小的问题困惑不已。因为业务的需要,我必需要在网页中制作一个Applet来显示动态数据。显示这个Applet问题如此简单,对于我来说。因为我自信不过就是将Swing的东西搬到一个Class中,继承一个JApplet而已。我经过一段短暂的思想斗争后,开始马不停踢的Code了。
  整个Code代码,我只用了一个上午的时间都搞定了,其实这主要是业务上数据处理的复杂并要求解析,所以导致时间过多,我想也许我会更快的。:)
  在我的IE上能正常显示Applet,我兴奋不已,短暂的胜利使我丧失了程序员应有的职业操守,我把Applet打成jar包,然后加入项目中,在其他项目成员中运行都非常理想。我认为这个问题已经告一段落了,我开始其他的工作。
  但是等待我的恶梦才看看开始,我们完成整个项目后,移交给测试组,测试组的Applet根本不能显示。"Why,Why,Why"这个问题我一直纳闷,至到测试组告诉我他们在没有JRE的环境中不能出来时,我才意思到问题出才那儿?我在JDK的Demo中找到文件jfc/SwingSet2的例子,在我的JSP
文件中加入类似如下代码:
  1. <!--"CONVERTED_APPLET"-->
  2. <!-- CONVERTER VERSION 1.3 -->
  3. <OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
  4. WIDTH = 695 HEIGHT = 525  
  5. codebase="http://java.sun.com/products/plugin/1.3/jinstall-13-win32.cab#Version=1,3,0,0">
  6. <PARAM NAME = CODE VALUE = SwingSet2Applet >
  7. <PARAM NAME = CODEBASE VALUE = "." >
  8. <PARAM NAME = ARCHIVE VALUE = "SwingSet2.jar" >
  9. <PARAM NAME="type" VALUE="application/x-java-applet;version=1.3">
  10. <PARAM NAME="scriptable" VALUE="false">
  11. <COMMENT>
  12. <EMBED type="application/x-java-applet;version=1.3"  
  13. CODE = SwingSet2Applet CODEBASE = "." 
  14. ARCHIVE = "SwingSet2.jar" 
  15. WIDTH = 695 HEIGHT = 525  
  16. scriptable=false 
  17. pluginspage="http://java.sun.com/products/plugin/1.3/plugin-install.html">
  18. <NOEMBED>
  19. </COMMENT>
  20. </NOEMBED></EMBED>
  21. </OBJECT>

如果这样,使用我们的网站的PC不能上网(由于我们的网站主要是企业级应用的)那不是不能正常下载JRE了吗,于是我将Sun公司的jinstall-13-win32.cab拷贝到我们的J2EE服务器上,供客户端下载。
  这个问题虽然解决了,但是测试组的全体人员给了这个问题解决方案的否定,她们的理由是其他网站的Applet都没有要求下载,为啥我们这个Applet要求下载安装JRE呢?我给他们解释AWT和Swing的关系,还搬出了Sun和Microsoft的合作故事,虽然他们忍气吞声的接受了我的方案,不过我自己却不能说服我自己了。
  我开始重新审阅我的代码,我发现其实我没有必要使用Swing的知识,我完全可以使用AWT的知识。于是我全部换成了AWT的东东。这个时间我只用了一个小时就完成了。
  然后我在我的系统装了一个双系统,另一个系统不装任何java运行环境。
  我进行测试发现我jar文件的第一个class不能找到显示Class ** not found,我在网上查资料,资料上显示"出现这个问题,请检查jar文件是否放到html的同一个目录"
我试了还是不行,最后,我做了一个试验,我将jdk的Demo关于Applet的java文件重新打成jar包,发现Sun的就可以。
  然后我想是不是在我的处理上有用到windows jvm不支持的class呢?于是我在sun的例子中重新修改其代码,然后编译之,打成jar包,发现还是不行。
  我有点欣慰,我认为我解决了我的问题,(其实我的理解不对,后来证实我的解答是错误的)。然后我在Google上搜索英文的资料,终于让我找到其理想的解决方案,但是这个解决方案和我想想的根本不是一会事。
  方案中说如果Applet不能正常显示请试试编译时,在javac中带参数-target 1.1,这个解决方案是我眼睛一亮。
  我明白了为啥windows jvm不能找到我的class了,因为我的编译使用jdk1.3,而运行环境是1.1,这样也许编译后的class有所不同(怀疑可能1.3中的class api已经更改过,或者优化过),这样导致了1.1的JVM根本不能借读1.3或者更高版本编译的class。
  最后我在我的build.xml(Ant工具使用的必备文件)Javac节点加入
  
  1. target="1.1"

  我的恶梦终于结束了。
  真希望我们的恶梦能也越来越少,神啦,救救我们吧,阿门。
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有