在applet中我用 Applet d = getAppletContext().getApplet("app1")来获取同页中name是"app1"的applet,但是一运行就提示错误如下:
java.lang.NullPointerException at java.applet.Applet.getAppletContext(Unknown Source) at ex31.<init>(ex31.java:19) 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.applet.AppletPanel.createApplet(Unknown Source) at sun.plugin.AppletViewer.createApplet(Unknown Source) at sun.applet.AppletPanel.runLoader(Unknown Source) at sun.applet.AppletPanel.run(Unknown Source) at java.lang.Thread.run(Unknown Source)但是那个applet是存在的,不知道是为什么?
java.lang.NullPointerException at java.applet.Applet.getAppletContext(Unknown Source) at ex31.<init>(ex31.java:19) 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.applet.AppletPanel.createApplet(Unknown Source) at sun.plugin.AppletViewer.createApplet(Unknown Source) at sun.applet.AppletPanel.runLoader(Unknown Source) at sun.applet.AppletPanel.run(Unknown Source) at java.lang.Thread.run(Unknown Source)但是那个applet是存在的,不知道是为什么?
解决方案 »
- 关于对象的内存回收的问题,请教
- Object对象转换成数组的问题
- Socket连接中ObjectOutputStream.writeObject()的问题
- 棘手问题:byte[]和String转换非文本问题,低手莫进
- 从数据库中用rs.getObject("aaa")取字段信息时报错,aaa 为 text字段
- java 中文帮助文档。谁有吗?
- 有能详细讲解一下EventListenerList的吗?一定给分,谢谢
- 高分求,如何退出程序
- 这个Applet程序为什么不能在网页中运行?提示找不到Java.awt.*;Java.applet.*;
- 关于swing中的一个问题,向各位朋友请教
- 急,new javax.swing.ImageIcon这儿出错
- 十万火急。在线等。java怎么在form中嵌入excel。。
<applet name="app1" code=app1 width=300 height=400></applet>2、Applet d = getAppletContext().getApplet("app1")不要放在init中,最早在start中。
app1 d=(app1)getAppgetAppletContext().getApplet("app1");
1)java.lang.NullPointerException,表明是空引用。问题在于虽然你在代码中调用了
getAppletContext().getApplet("app1")函数,但由于某些原因(比如app1尚未实例化),
导致这个函数获取applet对象失败,即为空对象。
2)在同一个网页中嵌入多个Applet时,原则上可以相互获取各自的引用进而调用公共方法,
但由于各Applet的代码大小可能差别很大,所以网络装载时间和实例化的进度将无法保证
同时完成,即无法保证某个Applet通过getAppletContext().getApplet就一定能找到那个
对象,所以推荐两种办法:
A)办法一:
用while循环,直到getAppletContext().getApplet返回的Applet
对象非空后,再进行余下的操作。
......
Applet app = null;
while(app==null) {
app = getAppletContext().getApplet("app1");
}
......
B)由于while循环太占用CPU资源,所以办法二:
在applet的初始化函数中启动一个线程,专门用于检测
getAppletContext().getApplet("app1")函数返回的applet对象是否为空,
直到非空时退出线程,再进行下一步操作。