首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2ME

J2ME WTK 命令行編譯、預驗證、打包與執行完整指南

     編輯:J2ME

雖然 WTK 圖形介面已足夠日常開發,但理解命令行流程有助於建立自動化建構腳本、CI 整合或排查建構問題。本文以 WTK 2.5 內建 Games 範例為例,詳細拆解四大步驟對應的批次指令與關鍵參數。

環境變數定義(批次檔常用)

set JAVAC="C:\Program Files\Java\jdk1.6\bin\javac.exe"
set PREVERIFY="C:\WTK2.5\bin\preverify.exe"
set JAR="C:\Program Files\Java\jdk1.6\bin\jar.exe"
set EMULATOR="C:\WTK2.5\bin\emulator.exe"

set CLDCAPI="C:\WTK2.5\lib\cldcapi10.jar"
set MIDPAPI="C:\WTK2.5\lib\midpapi20.jar"
set BOOTCP=%CLDCAPI%;%MIDPAPI%

四步驟詳解

1. 編譯

%JAVAC% -bootclasspath %BOOTCP% -d tmpclasses -classpath tmpclasses %JAVA_FILES%
  • -bootclasspath:限制只能使用 CLDC/MIDP API,防止誤用 J2SE 類別。
  • -d tmpclasses:輸出 .class 到暫存目錄。

2. 預驗證

%PREVERIFY% -classpath %BOOTCP%;tmpclasses -d classes tmpclasses
  • 將 .class 轉換為 CLDC 專用格式(StackMap 屬性),輸出至 classes/。
  • 此步驟必不可少,否則模擬器/真機載入會拋 ClassFormatError。

3. 打包 JAR

%JAR% cmf MANIFEST.MF Demo.jar -C classes .
%JAR% uf Demo.jar -C res .          # 追加資源檔(圖片、資料檔)
  • MANIFEST.MF 需包含 MIDlet-Name、MIDlet-Version、MIDlet-Vendor、MIDlet-1 等屬性。
  • 資源檔放在 res/ 目錄,打包時保持相對路徑,程式中用 getResourceAsStream("/xxx.png") 讀取。

4. 執行於模擬器

%EMULATOR% -Xdescriptor:bin\Demo.jad
  • Demo.jad 為應用描述檔,內容與 Manifest 對應,並指定 MIDlet-Jar-URL: Demo.jar、MIDlet-Jar-Size。
  • 若無 JAD,亦可直接 -Xjar:Demo.jar,但 JAD 為標準部署格式。

完整建構腳本範例(build.bat)

@echo off
call setenv.bat
%JAVAC% -bootclasspath %BOOTCP% -d tmpclasses -classpath tmpclasses src\*.java
if errorlevel 1 goto END
%PREVERIFY% -classpath %BOOTCP%;tmpclasses -d classes tmpclasses
if errorlevel 1 goto END
%JAR% cmf MANIFEST.MF bin\Demo.jar -C classes .
%JAR% uf bin\Demo.jar -C res .
echo Build success.
:END

實務提醒

  • KVM 已隱藏: WTK 2.x 後不再提供獨立 kvm.exe,執行皆透過 emulator.exe 載入 MIDlet。
  • 圖形工具優先: 日常開發請使用 WTK 的 ktoolbar(編譯、打包、執行一鍵完成),命令行僅供自動化腳本參考。
  • Ant 整合: 官方提供 wtk2.5\docs\ant-tasks.html,可直接在 build.xml 中呼叫 wtkjavac、wtkpreverify、wtkpackage 任務。

掌握命令行細節,讓 J2ME 專案也能納入現代化建構流程。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved