今天在调试一个简单的JAVA手机小程序的时候,遇到了一个让我头痛了半天的问题。但最终得以解决,将方法写上,说不定还有一些朋友也遇到了类似的情况。
这个程序是一个关于在手机上显示图片的程序,分成两段:
1、MainCanvas.java部分
内容如下:
import java.io.IOException;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
public class MainCanvas extends Canvas {
public Image m_Image;
MainCanvas(){
try{
m_Image=Image.createImage("/IM.png");
}
catch(IOException e){
}
}
protected void paint(Graphics g){
g.drawImage(m_Image,0,0,Graphics.TOP|Graphics.LEFT);
}
}
2、MyCartoonMidlet.java部分
内容如下:
ukimport javax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class MyCartoonMidlet extends MIDlet {
public MainCanvas m_MainCanvas;
public MyCartoonMidlet() {
// TODO 自动生成构造函数存根
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
// TODO 自动生成方法存根
}
protected void pauseApp() {
// TODO 自动生成方法存根
}
protected void startApp() throws MIDletStateChangeException {
m_MainCanvas=new MainCanvas();
Display.getDisplay(this).setCurrent(m_MainCanvas);
while(true){
m_MainCanvas.repaint();
}
}
}
过程是调用目录下的一个叫做 IIM.PNG的文件
在调试过程中,编译器老是报Java.lang.NullPointerException 的错误,顺藤摸瓜,发现是找不到图片的问题才导致抛出这样的异常。可是我已经把图片放到了程序目录下呀。于是一度认为是编程环境出了问题。可事实并非如此。查找了半天资料才发现,原来图片应该放在verified\classes下,把文件放进去,所有问题都解决了。OK!