一般 Java ME 產出 JAR 檔可跨手機運行,但 BlackBerry 僅支援 COD 格式。若要讓 Java ME Polish 專案在 BlackBerry 執行,必須在建構過程將 JAR 轉為 COD。本文記錄在 NetBeans + Java ME Polish 環境下的完整配置步驟。
rapc import=".../net_rim_api.jar" codename=TestBB jad=TestBB.jad TestBB.jar (需設定 rapc.exe 路徑)。或使用第三方 Java2Cod.exe。platforms.xml 啟用 COD 產生器於 Polish 安裝目錄 platforms.xml 的 BlackBerry 區段加入:
<capability name="build.Finalizer" value="jar2cod" />
(Preview 2.0 預設被註解,需啟用。或於 devices.xml 對應模擬器屬性加入。缺此行則不會自動轉 COD。)
Polish 內建支援至 4.2.0。若使用更新版 JDE:
將 ${BlackBerry目錄}/lib/net_rim_API.jar 複製至 ${Polish目錄}/import,並在 platforms.xml BlackBerry 區段修改:
<capability name="build.BootClassPath" value="net_rim_API.jar" />
build.xml 設定 BlackBerry Home<property name="blackberry.home"
location="C:/Program Files/Research In Motion/BlackBerry JDE 4.2.1" />
JAD 缺少 MicroEdition-Configuration 與 MicroEdition-Profile 會導致轉 COD 失敗。於 build.xml 的 <build> → <jad> 加入:
<jad>
<attribute target="jad" name="MicroEdition-Configuration" value="CLDC-1.1" if="polish.cldc11"/>
<attribute target="jad" name="MicroEdition-Profile" value="MIDP-2.0"/>
</jad>
rapc 轉換過程會自行混淆,Polish 混淆器 (如 ProGuard) 需停用:
<obfuscator name="ProGuard" unless="test or polish.blackberry">
</obfuscator>
於 <deviceRequirements> 設定:
<deviceRequirements>
<requirement name="Identifier" value="BlackBerry/8800" />
</deviceRequirements>
若專案呼叫 BlackBerry API (非標準 MIDP):**
將 <build> 下的 <midlet> 改為 <main>,並新增變數:
<main class="com.protel.BlackBerryim.ui.BlackBerryIMMidlet" />
<variables>
<variable name="polish.classes.midlet-1" value=" " /> <!-- 中間必須有一空格 -->
</variables>
關鍵: polish.classes.midlet-1 的 value 必須為單一空格,否則 JAR 無法轉 COD。
.cod 檔案群 (含 .cod, .cso, .csl 等)。rapc 錯誤,檢查 net_rim_api.jar 版本是否與 JDE 一致、JAD 屬性是否完整、混淆器確實關閉。在 NetBeans + Java ME Polish 環境開發 BlackBerry 應用,核心在於:啟用 jar2cod Finalizer、配置正確的 net_rim_api.jar、確保 JAD 完整、關閉外部混淆器、BlackBerry API 專案調整 main 元素與 polish.classes.midlet-1 空格值。完成上述配置後,標準 Polish 建構流程即可自動產出可在 BlackBerry 模擬器/實機運行的 COD 檔案。