已经看了很多帖子,但这个问题始终没能解决……啥都不说了,直接上代码:
html:
<body>
 
<applet codebase="." 
 
code="AutoLayoutDemo.class" 
 
name="AutoLayoutDemo" 
 
archive="twaver.jar,demo.jar"
 
width="320" 
 
height="240">
</body>
说明:在eclipse工作区里直接运行applet,可以正常显示
程序调用了外部包:twaver.jar,demo.jar
调用了外部的图片(这个不说了,显示不了也对程序功能没多大影响)
调用了一个d:根目录的文件
结果无论怎么修改在ie(可以正常运行sun的appletdemo)中都不能正常运行,错误信息如下:can't load image '/resource/image/swing/close.png'
can't load image '/resource/image/swing/minimize.png'
can't load image '/resource/image/swing/shrink.png'
java.lang.RuntimeException: java.lang.ExceptionInInitializerError
at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ExceptionInInitializerError
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at twaver.TUIManager.class$(Unknown Source)
at twaver.TUIManager.<clinit>(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at twaver.TWaverUtil.class$(Unknown Source)
at twaver.TWaverUtil.setLocale(Unknown Source)
at twaver.TWaverUtil.<clinit>(Unknown Source)
at twaver.TDataBox.<init>(Unknown Source)
at twaver.TDataBox.<init>(Unknown Source)
at twaver.TDataBox.<init>(Unknown Source)
at AutoLayoutDemo.<init>(AutoLayoutDemo.java:52)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$12.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at twaver.network.ui.ComponentAttachment.<clinit>(Unknown Source)
... 34 more
异常:java.lang.RuntimeException: java.lang.ExceptionInInitializerError
前三个can't load image文件在twaver.jar里,貌似包没被正常调用……
已经尝试了一下方案,均行不通:
直接用winrar解压twaver.jar
将此代码嵌入jsp中
更改jre权限加入permission   java.security.AllPermission;(更改后页面一片空白)
求解答啊……

解决方案 »

  1.   

    现在Applet越来越少了,真的不懂
      

  2.   

    唉,我也觉得……但是我很想将这个程序(swing结构)嵌入到网页中去啊,目前貌似也没其他方法了……
      

  3.   

    从报的异常来看,html里面嵌入的applet没有找到对应的png图片
    can't load image '/resource/image/swing/close.png'
    can't load image '/resource/image/swing/minimize.png'
    can't load image '/resource/image/swing/shrink.png'
    你可以先查一下,Html的同目录下有没有resource目录,对应的相对路径找close.png能找到么,先看看这个吧
      

  4.   

    先谢谢你的回答。但这一点我早已经查过了,其对应的图片位于twaver.jar包内。我也试过了直接把包用winrar解压,得到resource文件夹,并且其内有所要的image,但仍然是一样的错误提示,这让我太无语了……
      

  5.   

    applet这种技术已经被原来的sun抛弃了吧,我两年前学过,现在也忘了很多了。第一点,applet是有个寻找class和图片的基路径basedir设置的,默认值不知道,你那样做也找不到图片可以处理一下这个basedir第二,估计问题就出在applet找不到外部的jar包
      

  6.   

    现在加了basedir,变为:
    <html>
    <body>
     
    <applet codebase="." 
     basedir= "."
    code="AutoLayoutDemo.class" 
     
    name="AutoLayoutDemo" 
     
    archive="twaver.jar,demo.jar"
     
    width="320" 
     
    height="240">
    </body>
    </html>
    而且要的包都与网页在同一目录下,但还是一样的错误…………
      

  7.   

    其实程序原先是一个jframe类型的application,为了展示在web上,我才想将之做成applet。请问要将其展示在web上,还有其他解决方案吗?
      

  8.   

      Applet  不是主流啊   这个真搞不定  友情吧
      

  9.   

    是路径问题,你像下面这样提供图片的路径,如果不行再说。
      getClass().getResource(imageNum+".jpg")
      

  10.   

    补充,注意图片相对.class的路径要配置好,不行就放在一个目录下试试。
      

  11.   

    不介意的话,把eclipse项目发到
      

  12.   

    我这里有个例子(图像多,下载可能要花费一点时间,如出现程序错误的提示,直接点确定,不用管它)
    http://happy.host898.net/java/album/index.html
      

  13.   

    创建一个applet程序往往存在一个最常见的疏漏,就是从application的类文件中装载图像和其他资源时使用错误的代码,我们经常会看到代码试图使用一个绝对路径或者相对路径直接从文件存储中读取图像,我们给出一个例子
    ImageIcon icon=new ImageIcon("images/image.gif");这行代码在java application可以读取文件系统的文件,但在applet使用代码是不管用的,这是沙箱所不允许的,不管浏览器当前的目录是什么,都找不到所需的图像文件
    替代解决方案是ImageIcon icon=new ImageIcon(getClass().getResource("images/image.gif");,但并非所有的浏览器都支持getResource楼主不给代码,只能给你说一下是这个原因
      

  14.   

    先感谢一下你,我一直在尝试,之前还有错误提示,经过applet数字签名(因为要调用本地资源)后连错误提示都没了,只是一片空白……为说明问题我把原工程简化了,已经发过去了,请查收。再次感谢!
      

  15.   

    this.getClass().getClassLoader().getResource("your image url")
    这样试试。。
      

  16.   

    经过两天的艰苦卓绝的努力,终于将这个问题给解决了,在此感谢各位的支持了。究其原因有以下两点:
    1.所引入的以及自己打包的jar都要经过数字签名。(这一点至关重要)
    2.为避免绝对路径的麻烦,用getClass().getResource("images/image.gif");打包导入图片资源不失为一个调用图片的好的方法。
    再次感谢!
      

  17.   

    这个看上去是TWaver的例子,其实在TWaver社区中有相关的帖子和解决方法,还有相关的blog