首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2ME开发 >

程序抛出 java.lang.NullPointerException 请问!

2012-01-03 
程序抛出 java.lang.NullPointerException 请教!!!packagenewpackageimportjavax.microedition.midlet.*

程序抛出 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 ").
资源包的建立能让你的文件看上去整齐点~!~

热点排行