站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2ME 专题[菜鸟问题]JB说不能读取第二张图片,模拟器说“NullPointerException”异常,大家说怎么回事儿呢?

[菜鸟问题]JB说不能读取第二张图片,模拟器说“NullPointerException”异常,大家说怎么回事儿呢?

摘要: [菜鸟问题]JB说不能读取第二张图片,模拟器说“NullPointerException”异常,大家说怎么回事儿呢?


目的是导入一张图片作背景,再导入一张图片作为角色,在屏幕里来回跑的动画;
如果只导入一张图片是可以实现来回跑的动画的,但是再导一张背景图片进去就会出现下面的报错……

代码如下:


================
ok3.java
================

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

public class ok3 extends MIDlet {

private Canvas canvas;
private Display display;

public void startApp() throws MIDletStateChangeException {
display = Display.getDisplay(this);
canvas = new ok3Displayable();
display.setCurrent(canvas);
}
public void pauseApp() {}
public void destroyApp(boolean bool) throws MIDletStateChangeException {
}
}

=====================
ok3Displayable.java
=====================

package ok3;
import javax.microedition.lcdui.*;
import java.io.*;

public class ok3Displayable extends Canvas implements Runnable{

private Image[] monkey;
private int x = 20;//x坐标
private int y = 120;//y坐标

public ok3Displayable(){
try {
monkey = new Image[2];
monkey[0] = Image.createImage("/ohyeah.png");
monkey[1] = Image.createImage("/back.png");
}
catch(IOException e) {e.printStackTrace();}

Thread th = new Thread(this);//制作新线程
th.start();//开始线程
}
protected void paint(Graphics g) {
g.setColor(225, 255, 255); // red
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(0, 0, 0); // black
g.drawString("Monkey moving!",10,20,0);
g.drawImage(monkey[1],0,0, Graphics.HCENTER | Graphics.VCENTER );
g.drawImage(monkey[0],x,y, Graphics.HCENTER | Graphics.VCENTER );
}
public void run() {
while (true){
y++;
x-=2;
if(x < 0)x = getWidth();
if(y > getHeight()) y = 0;
repaint();
try{
Thread.sleep(100);//100毫秒待机
}catch(InterruptedException e){}
}
}
}

==============================================
JB的DEBUG如下:

D:/JBuilder/jdk1.5/bin/java -classpath "C:/Nokia/Devices/Nokia_7210_MIDP_SDK_v1_0/tools/emulator.jar" -Demulator.home="C:/Nokia/Devices/Nokia_7210_MIDP_SDK_v1_0" com.nokia.phone.sdk.Emulator -classpath "C:/Documents and Settings/Administrator/jbproject/ok3/classes;C:/Nokia/Devices/Nokia_7210_MIDP_SDK_v1_0/lib/classes.zip" -jad "C:/Documents and Settings/Administrator/jbproject/ok3/jad-temp/ok3.jad"

Emulator command: C:/Nokia/Devices/Nokia_7210_MIDP_SDK_v1_0/bin/7210.exe -parent_port 2810 -classpath "C:/Nokia/Devices/Nokia_7210_MIDP_SDK_v1_0/lib/classes.zip;C:/Documents and Settings/Administrator/jbproject/ok3/classes;C:/Nokia/Devices/Nokia_7210_MIDP_SDK_v1_0/lib/classes.zip" "C:/Documents and Settings/Administrator/jbproject/ok3/jad-temp/ok3.jad"

java.io.IOException: Cannot read /back.png

at javax.microedition.lcdui.Image.createImage(+55)
at ok3.ok3Displayable.(+45)
at ok3.ok3.startApp(+16)
at javax.microedition.midlet.MIDletProxy.startApp(+7)
at com.nokia.mid.impl.isa.ui.MIDletManager.callStartApp(+4)
at com.nokia.mid.impl.isa.ui.MIDletManager.activateMIDlet(+10)
at com.nokia.mid.impl.isa.ui.MIDletManager.launchMIDlet(+15)
at com.nokia.mid.impl.isa.ui.MIDletManager.init(+22)
at com.nokia.mid.impl.isa.ui.MIDletManager.main(+41)


模拟器运行的时候说程序错误,点击“细节”之后显示“java/lang/NullPointerException”。

拜托大家帮我看看为什么-_-|||
谢谢了!!!


代码没什么问题.既然显示IO异常.那就是在创建图片的时候出的问题.你再仔细检查一下图片的路径和大小写.


大小写都一致的,路径就是和第一张图片放在RES里了呀~~


有可能这2张图片大小不一样,你不可能把一个24*24与32*32象素的图片放到一个Imgae数组里


跟图片大小没关系。

你试一下把第一张图片改成第二张图片的名字。 读两张一样的图,名字不同,看是否可以显示。或者把画第二张图的语句注释掉。然后再找原因。


谢谢!按照k7sem兄的办法已经解决了!


↑返回目录
前一篇: 如果搞一个免费的J2ME入门培训,你有兴趣参加吗?
后一篇: 请教各位,NOKIA的MIDP SDK中,哪些是支持MIDP2.0的?