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

中國移動百寶箱應用打包常見問題與解決方案

     編輯:J2ME

前言

針對 SP(服務提供商)在提交應用至中國移動「百寶箱」平台時常遇到的兩大打包問題,本文整理了經實測驗證的解決辦法,助你順利通過測試上架。

問題一:JAD 缺少必要屬性

現象:平台回報「JAD 中缺少應有的項:MIDlet-Vendor、MIDlet-Version」。

根因:JAD 檔案編碼非 ASCII。平台文檔要求 JAD 必須為 ASCII 編碼;若為 UTF-8 且包含 BOM(Byte Order Mark)或非 ASCII 字元,解析器會誤判屬性缺失。

解決步驟(使用 UltraEdit)

  1. 開啟 Advanced → Configuration,取消勾選 「Automatically detect UTF-8 files」**。
  2. 同頁面取消勾選 「Write UTF-8 BOM (ROM) when saving UTF-8 files」**。
  3. 執行 File → Conversions → UTF-8 to ASCII** 轉換。
  4. 轉換後確認 JAD 內容無亂碼,再行上傳。

補充說明:ASCII 版 JAD 僅供平台上傳測試用;最終提交給移動的正式包仍需 UTF-8 版 JAD(平台會自行轉碼)。

問題二:應用與 Java 特徵不匹配,無法上傳

現象:上傳時提示「應用和已知的 Java 特征不匹配,不能被上傳」。

根因:編譯產生的 .class 檔版本過高(預設為 Java 1.4/1.5),百寶箱平台僅支援 JDK 1.1 兼容 的 class 檔格式(major version 45.0)。

解決方案:Eclipse 編譯器設定

在 Eclipse 專案屬性 Java Compiler → Configure Project Specific Settings 中設定:

  • Compiler compliance level: 1.4
  • Generated .class files compatibility: 1.1 (關鍵)
  • Source compatibility: 1.3

此設定僅影響 bytecode 版本,不影響語法特性(仍可用 1.3/1.4 語法)。

完整打包流程(Eclipse + WTK 混合)

  1. 在 Eclipse 設定上述兼容性後建置,產出 .class 並打包為 app.jar。
  2. 使用 WTK (Wireless Toolkit) 開啟專案,編寫正確的 JAD(含 MIDlet-Name、MIDlet-Version、MIDlet-Vendor 等),並用 WTK 打包一次,取得正確的 MANIFEST.MF 與 JAD。
  3. 用 WinRAR 解壓 Eclipse 產出的 app.jar,將 WTK 產生的 MANIFEST.MF 覆蓋原 META-INF/MANIFEST.MF。
  4. 在 WinRAR 中選取所有檔案(勿包含外層目錄),以 ZIP 格式、最大壓縮重新打包為 app.jar。
  5. 修改 JAD 中的 MIDlet-Jar-Size 為新 JAR 的位元組大小。
  6. 將 JAD 轉為 ASCII(同上)進行平台上傳測試。

機型適配補充

  • 顯示名稱差異:S60/k700 顯示 MIDlet-1 名稱;Nokia S40 顯示 MIDlet-Name。
  • 中文名稱限制:Nokia 7650 不支援中文 MIDlet 名稱(NGage QD 可)。
  • 平台適配列表:上傳後務必確認目標機型(如 6600)在適配列表中被勾選,否則會收到「經檢測、上傳應用與提交平台不匹配」。

快速驗證技巧

每個 SP 皆有移動分配的上傳測試帳號。打包完成後,先用 ASCII-JAD 上傳測試;若通過,再用 UTF-8-JAD 正式提交。切勿等正式審核才發現問題。

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