eclipse + wtk的开发环境下遇到如下问题:通过Image.createImage(“/test.png”)老是创建不成功图片资源,以至于每次运行Emulated J2ME Medlet程序时,报错如下:
java.io.IOException
at javax.microedition.lcdui.ImmutableImage.getImageFromStream(+15)
at javax.microedition.lcdui.ImmutableImage.<init>(+20)
at javax.microedition.lcdui.Image.createImage(+8)
at test.HelloWorld.startApp(+25)
at javax.microedition.midlet.MIDletProxy.startApp(+7)
at com.sun.midp.midlet.Scheduler.schedule(+270)
at com.sun.midp.main.Main.runLocalClass(+28)
at com.sun.midp.main.Main.main(+80)
startApp threw an Exception
java.lang.NullPointerException
java.lang.NullPointerException
at javax.microedition.lcdui.Form.append(+11)
at test.HelloWorld.startApp(+39)
at javax.microedition.midlet.MIDletProxy.startApp(+7)
at com.sun.midp.midlet.Scheduler.schedule(+270)
at com.sun.midp.main.Main.runLocalClass(+28)
at com.sun.midp.main.Main.main(+80)
好,这是问题,是个好问题。
下面,就从创建一个J2ME Medlet suite工程开始,怎样初次接触J2ME的开发,并解决如上问题。
我所用的开发环境为:eclipse3.3.0+jdk1.6+wtk2.5.2+eclipseme1.6.7
配置环境可以参考如下我修改的网络文章:
下载必备软件,
1 eclipse 3.3.0 到下面这个地址去找找
http://www.eclipse.org/downloads/
2 eclipseme 1.6.7
http://sourceforge.net/project/showfiles.php?group_id=86829
3 wtk2.5 (Sun Java Wireless Toolkit 2.5 for CLDC) sun公司提供的无线开发工具包
http://java.sun.com/products/sjwtoolkit/zh_download-2_5.html
安装配置步骤
1.安转Eclipse3.3.0(必须先安装好jdk1.5或以上版本,这里不说明了)
2.安装EclipseMe1.6.7
3.安装WTK2.5
4.测试HelloWorld
5.使用Nokia模拟器测试
1.安装Eclipse3.3.0
把下载到的zip文件解压后直接放到c盘根目录即可,当然,你可以放到你喜欢的任何地方,这里为了描述方便放到c:/eclipse
运行eclipse,如果能正常启动,说明jdk安装正确,否则,你可能需要一个新版本的jdk,到sun的网站去下。
2.安装eclipsme1.6.7
下载了eclipseme之后,把eclipsme1.6.7 解压到一个临时目录中,把目录和文件
plugins
features
site.xml
全部copy到eclipse的目录中即可
启动eclipse3.3.0 从菜单 windows->references...进入
在references面板的左边的树状目录中,应该多了一个J2ME项。
3.安装WTK2.5
下载了WTK2.5 ,把主目录安装到C:/WTK25下,其他的按默认安装就行。
好,软件都安装好了,下面是最重要的配置部分
A.修改Eclipse的配置,使其邦定EclipseME框架
1)在eclipse的配置目录configuration中找到配置文件config.ini
2)用文本编辑器打开,增加一个属性定义
osgi.framework.extensions=eclipseme.core.hooks
如果该属性已经存在,则把值eclipseme.core.hooks加上
注意:这一行必须加在config.ini的eof=eof前面,不能加到后面。否则,可能会导致Eclipse启动失败。
3)保存config.ini
4)重新启动 eclipse
B.修改eclipse的build path 和debug选项
1)把源代码和输出分离开
从菜单 windows->references...进入
展开references面板的java项,然后点选 build path
默认情况下 "source and outpub folder"项的 "project"为选中,我们修改这个默认设置,把"folders"选中
这样,就可以让eclipse把源代码和输出分离开。
2)修改调试选项的异常挂起设置和超时时间(很重要)
从菜单 windows->references...进入
展开references面板的java项,然后点选 debug
在Suspend Execution项中,把
"Suspend execution on uncaught exceptions"
"Suspend execution on compilation errors"
这两项的勾去掉
在面板的最下面,把 debugger timeout(ms)设置为 15000(这个参数太重要了,一定要记得改)
C.为eclipseme配置模拟器
从菜单 windows->references...进入
在references面板左侧的树种,展开 "J2ME" 项
选中 Devices Management,点击右边的 "Import..."按钮
在弹出的Import Device 面板中,点击按钮"browse...",然后选择WTK的bin目录,确定后,点击" refresh"按钮,就会自动去找到模拟器了。点击“finish”按钮返回。
这样,模拟器就配好了,如果需要其他的模拟器,照这样做就可以了。
4创建MIDlet应用程序。
有两种方法创建MIDlet应用程序
方法1:(适用于从无到有)创建MIDlet工程
从菜单 File ->New ->Project 进入工程面板
然后展开J2ME ,其中只有一个 J2ME MIDlet Suite
输入工程名称后,就可以选择你需要的模拟器了,一路下去就行了。
方法2.(适用于往有工程里面添加MIDlet程序)
从菜单 File ->New ->others 进入NEW面板
然后展开J2ME ,其中有2个选项
J2ME MIDlet
J2ME MIDlet Suite
如果选择 J2ME MIDlet ,则创建一个MIDlet,选择J2ME MIDlet Suite,则创建一个MIDlet工程。
好了,我们做一个例子,创建一个HelloWorld的工程,用方法二,创建完毕之后,eclipse中的工程展开可以看到目录结构如下:
所以,可以从上面看出来,src文件夹中主要存储java文件,而res文件夹主要存储图片,声音等资源文件,deployed文件夹则是在打包之后,产生的jar文件和jad文件的文件夹。
A.创建一个源文件
这样我们在src文件夹中创建一个test包,在test包中创建一个j2me medlet文件,文件名为HelloWorld.java
package test;
import java.io.IOException;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Image;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class HelloWorld extends MIDlet {
private Display display = null;
protected void startApp() throws MIDletStateChangeException {
// TODO Auto-generated method stub
display = Display.getDisplay(this);
Form form = new Form("图片路径");
Image img = null;
try {
img = Image.createImage("/BEIJING.PNG");
} catch (IOException ex) {
ex.printStackTrace();
}
form.append(img);
display.setCurrent(form);
}
protected void pauseApp() {
// TODO Auto-generated method stub
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
// TODO Auto-generated method stub
}
}
B.导入一个png文件到res文件夹中。
我们导入一个BEIJING.PNG图片文件(注意,这个文件名字非常重要,文件名字的大小写也必须完全一致,这样能够解决文章开头出现的图片文件路径问题)
5. 使用Nokia模拟器测试
在工程中,在需要调试或运行的主要类上点击右健,从右健菜单中选择
run as -〉Emulated j2me Midlet
或者
debug as -〉Emulated j2me Midlet
即可进行运行和调试
6.打包
在需要打包的工程目录上点击右健,从右键菜单中选择
j2me->create package 即可