1. 导入设备定义
你必须至少配置一种设备定义之后才能开始使用EclipseME。请按下列步骤来配置设备定义:
-
从Eclipse的窗口菜单中选择首选项。
-
打开左边面板的J2ME选项分支,点击设备管理(Device Management)。
-
按导入...(Import)按钮。
-
在接下来的对话框中,选择一个包含无线工具包的根目录,EclipseME将从中查找已知设备定义。
当你离开查找目录文本框,或按下了刷新(Refresh)按钮, EclipseME就会开始从指定的目录和其子目录中搜索设备定义。 在EclipseME的1.5.0版本中,你不再需要“精确的”选择目录才能正确导入设备, 只要它们位于你指定的目录中,EclipseME就应该能定位到它们。 找到一个设备定义,EclipseME就会在列表中显示出一个。如果你希望停止搜索, 只要按下取消(Cancel)按钮就可以。
搜索结束以后,勾选你想导入的那些设备定义。只有导入后的设备才能被用于定义项目以及启动程序。 最后,选择完成(Finish)结束导入流程。
如果EclipseME没找到你希望导入的设备定义,那可能是EclipseME还不支持它。 这种情况下,请向我们提交一个RFE(新特性需求)来要求增加对这种WTK的支持,别不好意思。 具体怎么做请参见这里。
-
当你成功的增加了设备定义,你就会在设备管理首选项中看到这些导入的设备。
点确定来保存设备定义。
2. 改变Eclipse的调试设定
因为无线工具包有一些奇怪的设计(尤其是Sun的),如果你想使用Eclipse来调试MIDlet, 那你必须改变一些默认的调试设定。像这样:
-
选择Eclipse的窗口菜单中的首选项。
-
打开左边面板中的Java选项分支 并点击调试项。
-
确保接近对话框顶端的两项:发生未捕获的异常时暂挂执行 和在发生编译错误时暂挂执行都没有被勾选。
-
把接近对话框底部的:调试器超时的值增大到最少15000毫秒。
-
设定后的结果应该看上去类似这样:
如果你不做这些改变,在运行MIDlet的时候就会发生错误。
3. 配置ProGuard混淆器(可选)
如果你想用ProGuard来产生混淆包,那你就需要把它配置到插件中。这样做:
-
选择Eclipse的窗口菜单中的首选项。
-
打开左边面板的J2ME选项分支, 选择打包(Packaging)子项, 然后点击混淆(Obfuscation)。
-
配置ProGuard的根目录(在对话框顶部)。
-
在下面按照你的需要配置ProGuard选项。更多关于ProGuard的信息,请参见 ProGuard的SourceForge站点。
Microsoft Windows用户请注意: 默认情况下,ProGuard假定你使用的的操作系统能够区分两个只是大小写不同的文件名的 (比如,A.java和a.java被认为是两个不同的文件)。 显然Microsoft Windows不是这样的操作系统(Windows是对文件名是大小写不敏感的)。 因此Windows用户必须为ProGurad指定-dontusemixedcaseclassnames选项。 如果你不这么做并且你的项目中有超过26个类的话,那么ProGuard就会默认混用大小写文件名, 而导致class文件相互覆盖。安全起见,从0.9.0版本开始,EclipseME默认为ProGuard设置 -dontusemixedcaseclassnames选项。项目中有很多类的UNIX用户 可以删除这个选项,这样最终产生的JAR文件的大小可以进一步缩小。
-
设定后的结果应该看上去类似这样:
4. 配置EclipseME的无线下载(OTA)选项(可选)
如果你想使用EclipseME在无线下载(OTA)模式下调试MIDlet,那么你可能需要调整OTA首选项。这样做:
-
选择Eclipse的窗口菜单中的首选项。
-
打开左边面板中的J2ME选项分支 并点击Over The Air项。
-
默认的设置应该是这样:
到这里,你已经准备就绪,可以开始创建你的MIDlet套件项目了。
在本节中,我们将介绍使用 EclipseMe 插件构建 J2ME 应用程序的基本步骤。首先,您将创建一个 J2ME 项目。然后,您可以开始您的J2ME开发之旅。
要创建一个 J2ME 项目,回到"File"菜单,选择"New"项,并在子菜单中选择"Project"。然后执行以下步骤:
(1.) 进入"J2ME"选项,选择"J2ME Midlet Suite"并单击"Next"(参见图4)。
(2.) 填上项目名,并单击"Next"(参见图5)。
(3.) 选择可能的平台定义。可以选择"J2ME Wireless Toolkit 2.1 MIDP1.0 Platform"或者"J2ME Wireless Toolkit 2.1 MIDP1.0 Platform",默认为前者。(参见图6)。
(4.) 单击"Next",出现J2ME项目有关设置,这里我们均采用默认设置(参见图7)。
(5.) 单击"Finish",完成项目创建。
最终创建 J2ME 项目的结果如图8所示。
图 4. 创建 J2ME 项目 - 步骤 1
图 5. 创建 J2ME 项目 - 步骤 2
图 6. 创建 J2ME 项目 - 步骤 3
图 7. 创建 J2ME 项目 - 步骤 4
图 8. 创建 J2ME 项目 - 最终结果
要创建一个 J2ME 应用程序,回到"File"菜单,选择"New"项,并在子菜单中选择"Other"。然后执行以下步骤:
(1). 进入"J2ME"选项,选择"J2ME Midlet"并单击"Next"(参见图9)。
(2). 填上应用程序名,其他设置采用默认设置,并单击"Finish"(参见图10),完成应用程序创建。
图 9. 创建 J2ME 应用程序 - 步骤 1
图 10 创建 J2ME 应用程序 - 步骤2
系统会自动生成HelloWorld.java程序以及一段自动生成的代码,最终的程序代码见清单1。
/**
* HelloWorld.java
*
* @author Ken.xu
*/
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.TextBox;
import javax.microedition.midlet.MIDlet;
public class HelloWorld extends MIDlet {
private TextBox textbox;
/**
* Constructor of the HelloWorld class
*/
public HelloWorld() {
textbox = new TextBox( " ff " , " Hello World!Ken " , 20 , 0 );
}
/*
* The startApp method is used for starting or restarting a MIDlet.
*
* @see javax.microedition.midlet.MIDlet#startApp()
*/
public void startApp() {
Display.getDisplay( this ).setCurrent(textbox);
}
/*
* The pauseApp method is called by the system to ask a MIDlet to "pause"
*
* @see javax.microedition.midlet.MIDlet#pauseApp()
*/
public void pauseApp() {
}
/*
* The destroyApp method is called by the system when the MIDlet is about to
* be destroyed
*
* @see javax.microedition.midlet.MIDlet#destroyApp(boolean)
*/
public void destroyApp( boolean unconditional) {
}
}
要 运行一个 J2ME 应用程序,选中一个应用程序,本文中为HelloWorld.java,然后回到"Run"菜单,选择"Run As"项,并在子菜单中选择"1 Emulated J2ME Midlet"。然后Eclipse会启动J2ME Wireless Toolkit 2.1中的模拟器得到运行结果见图11。
最后要补充一句:
在使用配置Eclipse3.2.2和EclipseMe1.7.9,搭建J2ME平台编程环境时,写完程序会发现文件的"Run as"后面只有一个“open run dialog”。别怕,这也许是EclipseMe的一个bug吧,不过还好,很好解决,解决方法如下。这个方法可是我费了一个下午的时间才发现的。
- 选择run as-->open run dialog,
- 在打开的窗口中选择 wireless toolkit emulator选项下面的子选项中你的MIDlet项目(如果没有可以双击 wireless toolkit emulator新建一个,在name中输入配置名,在project中输入你要运行的MIDlet的项目名),
- 然后在右边的窗口中的"executable"栏中选中"Midlet",点击右边的"search",在弹出的窗口中输入你的MIDlet项目的主类名,
- 然后确定.点击APPLAY,
- 再点击run应该就可以了!(注意要确保project(项目名)是你要运行的项目的名称,可以直接输入)