File → New Project
Project → Project Properties → PathsRequired Libraries 加入 J2ME SDK:WTK 預設路徑 C:\WTK2.5.2 或廠商 SDKBoot Classpath 顯示 midpapi.zip, cldcapi.zip 等New → Classjavax.microedition.midlet.MIDletstartApp(), pauseApp(), destroyApp()Mobile → Create JAR/JADMIDlet-Name, MIDlet-Version, MIDlet-Vendor, MIDlet-Jar-URL, MIDlet-1 等屬性Sign JAR (如需簽名)Run → Run in Emulator 或工具列手機圖示import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class HelloMIDlet extends MIDlet {
private Display display;
private Form mainForm;
public HelloMIDlet() {
display = Display.getDisplay(this);
mainForm = new Form("Hello J2ME");
mainForm.append("Welcome to J2ME World!");
mainForm.addCommand(new Command("Exit", Command.EXIT, 1));
mainForm.setCommandListener(c -> {
if (c.getCommandType() == Command.EXIT) {
destroyApp(true);
notifyDestroyed();
}
});
}
protected void startApp() {
display.setCurrent(mainForm);
}
protected void pauseApp() {}
protected void destroyApp(boolean unconditional) {}
}
| 問題 | 原因 | 解決 |
|---|---|---|
| 專案建立時找不到 J2ME SDK | WTK 未安裝或路徑錯誤 | 安裝 WTK 2.5.2,專案屬性指向正確目錄 |
模擬器啟動報 NoClassDefFoundError | Boot Classpath 缺少 midp/cldc API | 檢查 Required Libraries 包含 J2ME SDK |
| JAR 體積過大超過手機限制 | 引入過多庫、未混淆 | 使用 ProGuard 混淆壓縮,移除未用代碼 |
| 真機安裝失敗 | JAD/MANIFEST 屬性不符、未簽名 | 核對 MIDlet-*, 使用廠商簽名工具 |
| 網路連線權限錯誤 | MIDP 2.0 安全域限制 | JAD 加入 MIDlet-Permissions: javax.microedition.io.Connector.http |
RecordStore APIHttpConnection, SocketConnection, DatagramConnectionLocalDevice, DiscoveryAgent-keep public class * extends javax.microedition.midlet.MIDletJ2ME (CLDC/MIDP) 是功能機時代 (2002-2010) 主流行動開發平台。智慧型手機興起 (iOS 2007, Android 2008) 後迅速淘汰。現代行動開發:
JBuilder 內建 MobileSet/WTK 讓 J2ME 開發「開箱即用」,核心在於 正確配置 J2ME SDK 路徑、理解 MIDlet 生命週期、掌握 JAD/JAR 打包與模擬器除錯。雖技術棧已成為歷史,但「受限資源下的程式設計思維」(記憶體、CPU、網路、電量) 仍具參考價值。