eclipse+wtk开发j2me程序,并解决j2me中图片路径问题

时间:2021-07-12 13:51:05

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
     
全部copyeclipse的目录中即可
  
启动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.inieof=eof前面,不能加到后面。否则,可能会导致Eclipse启动失败。
      3
)保存config.ini
      4
)重新启动
eclipse
B.
修改eclipsebuild 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...",然后选择WTKbin目录,确定后,点击" 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
即可