读书人

程序抛出 java.lang.NullPointerExcep

发布时间: 2012-01-03 22:16:06 作者: rapoo

程序抛出 java.lang.NullPointerException 请教!!!
package newpackage;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

/**
*
* @author kl0
* @version
*/
public class MyCartoonMidlet extends MIDlet {
public MainCanvas m_MainCanvas;
public MyCartoonMidlet(){
super();
}
public void startApp() throws MIDletStateChangeException {
m_MainCanvas=new MainCanvas();
Display.getDisplay(this).setCurrent(m_MainCanvas);
while(true){
m_MainCanvas.repaint();
}
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) throws MIDletStateChangeException{
}
}


package newpackage;

import java.io.IOException;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;

/**
*
* @author kl0
*/
public class MainCanvas extends Canvas{
public Image m_Image;

/** Creates a new instance of MainCarvas */
public MainCanvas() {
try {
m_Image=Image.createImage( "/IM.png ");
} catch (IOException e) {

}
}

protected void paint(Graphics graphics) {
graphics.drawImage(m_Image,0,0,Graphics.TOP|Graphics.LEFT);
}

}


/*运行的时候就
java.lang.NullPointerException:
at newpackage.MainCanvas.paint(MainCanvas.java:34)
at javax.microedition.lcdui.Canvas.callPaint(Canvas.java:1063)
at javax.microedition.lcdui.Display.repaint(Display.java:1435)
at javax.microedition.lcdui.Display$DisplayAccessor.repaint(Display.java:2165)


at javax.microedition.lcdui.Display$DisplayManagerImpl.repaint(Display.java:2912)
at com.sun.midp.lcdui.DefaultEventHandler.repaintScreenEvent(DefaultEventHandler.java:398)
at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.run(DefaultEventHandler.java:728)

高手帮看下,怎样解决!!!*/



[解决办法]
空指针异常,传进来的参数有可能为空,graphics未被实例化
[解决办法]
graphics g大写,Graphics
[解决办法]
为什么没人认为是m_Image为null呢??
我觉得是:
try {
m_Image=Image.createImage( "/IM.png ");
} catch (IOException e) {

}
这段代码抛了异常,m_Image没有找到,没有构建成功啊.

saltedfish
[解决办法]
为什么没人认为是m_Image为null呢??
我觉得是:
try {
m_Image=Image.createImage( "/IM.png ");
} catch (IOException e) {

}
这段代码抛了异常,m_Image没有找到,没有构建成功啊.

同意这种说法,应该说是确定!
看看文件有没有加载到资源里面去!
[解决办法]
这明显是由于你的createImage没有成功,抛了异常,所以image为null.drawImage的时候抛空指针..
你可以加上一句:
if (m_image != null)
graphics.drawImage(m_Image,0,0,Graphics.TOP|Graphics.LEFT);

你检查下你的IM.png是不是在你的jar包根目录下
[解决办法]
m_Image=Image.createImage( "/IM.png "); ??
试试
m_Image=Image.createImage( "IM.png ");
or
m_Image=Image.createImage( "./IM.png ");
[解决办法]
哈哈。好像就是你那的问题
[解决办法]
我遇到过这个问题,当时想了好久,最后用土方法找到了问题的根点,就是用System.out.print( ".... ");来跟踪
我想你的问题跟我的是一样的就是m_Image=Image.createImage( "/IM.png ");这个地方出错了
你把要加载的图片名称复制下来,比如说:你的图片名字是IM.PNG,那就把原来的IM.png该过成IM.PNG吧!图片的扩展名的大小写也决定了加载图片是否成功的。试试看吧!祝你成功!
[解决办法]
学习气氛好 支持
[解决办法]
m_Image=Image.createImage( "/IM.png ");
里面路径错了吧
把文件加都加全了试试看
[解决办法]
如果你没用NB创建资源包的话 IM.png请放在src文件包底下( "/IM.png "引用) 放在别的文件夹底下就用绝对路径引用( "d:/```/IM.png ").
资源包的建立能让你的文件看上去整齐点~!~

读书人网 >J2ME开发

热点推荐