接上篇環境配置,本文演示在 EclipseME 中從零創建 J2ME 項目、編寫 MIDlet 代碼、多設備模擬器運行、導出 OTA 部署包的端到端實戰操作。
File → New → Project...NextHelloMIDletSuite → NextJ2ME Wireless Toolkit 2.1 MIDP 2.0 Platform (或 1.0) → Nextsrc, Output folder: bin, Resource folder: res) → Finish項目結構自動生成:
HelloMIDletSuite/ ├── src/ # Java 源文件 ├── res/ # 資源文件 (圖片、數據) ├── bin/ # 編譯輸出 .class、預驗證後 class ├── build/ # 打包輸出 .jar、.jad ├── jad.properties # JAD 屬性模板 └── .eclipseme # EclipseME 內部配置





src → New → Classcom.example.hello, Name: HelloMIDletjavax.microedition.midlet.MIDletConstructors from superclass, Inherited abstract methodspackage com.example.hello;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class HelloMIDlet extends MIDlet {
private Display display;
public HelloMIDlet() { display = Display.getDisplay(this); }
protected void startApp() {
Form form = new Form("Hello EclipseME");
form.append("Hello, J2ME World!");
form.addCommand(new Command("Exit", Command.EXIT, 1));
form.setCommandListener(c -> {
if (c.getCommandType() == Command.EXIT) destroyApp(true);
});
display.setCurrent(form);
}
protected void pauseApp() {}
protected void destroyApp(boolean unconditional) {
notifyDestroyed();
}
}
Properties → J2ME → Midlet SuiteHello, Class: com.example.hello.HelloMIDlet, Icon: (可選選擇 res/icon.png)Hello Suite, MIDlet-Version: 1.0.0, MIDlet-Vendor: MyCompanyAllow 或 Blanket (需簽名)Run As → J2ME MidletSun WTK 2.1 DefaultColorPhone 或 Nokia7210 (若已導入皮膚)System.out.println、异常堆棧Run → Run Configurations... → J2ME MidletDefaultColorPhone (240x320)、DefaultGrayPhone (128x128)、Nokia7210 (128x128, 彩色)、MotorolaC650 (176x220)Export → J2ME → Deployable MIDlet SuiteC:\deploy\hello\)HelloMIDletSuite.jad、HelloMIDletSuite.jarhttps://PC_IP:PORT/HelloMIDletSuite.jad → 自動下載安裝proguard.jar 放入項目 tools/J2ME → Obfuscation:啟用、指定 ProGuard JAR、配置 proguard.cfg (保留 MIDlet 入口類、序列化類、RMS 類)| 問題 | 解決 |
|---|---|
| 模擬器中文亂碼 | WTK 默認字體無中文,使用自定義位圖字體或確保設備皮膚支持中文 |
| JAR 超過設備限制 (如 64KB) | 啟用 ProGuard、移除調試代碼、壓縮圖片 (PNG 8位)、合併工具類 |
| 網絡請求彈窗頻繁 | 簽名 MIDlet (Trusted 域)、或用戶授權 "Always Allow" |
| 真機安裝失敗 "Invalid JAD" | 檢查 JAD 中 MIDlet-Jar-URL 為絕對 HTTP 路徑、JAR 大小與 JAD 一致、MIME 類型正確 |
| EclipseME 控制台無輸出 | Run Configuration → Common → 勾選 "Allocate console" |
EclipseME 將 WTK 命令行工具鏈圖形化、IDE 化,提供了當時最主流的 J2ME 開發體驗:項目向導 → 智能編輯 → 多設備一鍵運行 → OTA 一鍵部署 → 混淆優化。雖然 J2ME 時代已過,但 EclipseME 的插件化架構設計、跨平台工具鏈抽象、設備能力庫管理思想,對現代 IDE 插件開發 (如 Android Studio 插件、VS Code 擴展) 仍有參考價值。