常見問題

Sun JavaTM Wireless Toolkit for CLDC

2007 年 9 月

 

安裝
一般問題
模擬器問題
排解疑難問題

安裝

安裝程序在解壓縮階段失敗。我收到以下內容的訊息:

Extracting the installation files...
Error!CRCs do not match!Got e61aebb2, expected f53ddfb0
Failed to extract files.Installation will stop now.

您使用的 Java Archive (JAR) 公用程式可能不相容。安裝程序會提示您輸入到 Java 解譯器的路徑。你必須提供 JavaTM Platform, Standard Edition (Java SE SDK) 1.5.0 版安裝的完整路徑。

安裝程序在解壓縮階段失敗。我收到以下內容的訊息:

...
/usr/java/jre1.5.0_08/bin/jar:No such file or directory
Failed to extract files.Installation will stop now.

JRE 無法滿足要求,您需要 1.5.0 版的 Java Development Kit (JDK)。請安裝完整的 JavaTM Platform, Standard Edition (Java SE)。安裝過程中,請提供到 Java SE 安裝的完整路徑。

版本說明描述如何在 Windows 平台上安裝 SNAP Mobile 模擬環境。在 Linux 上作業時如何取得 SnapMobileSample MIDlet?

  1. 使用版本說明指示在網路中的任一 Windows 機器上安裝 SNAP Mobile 模擬環境。
  2. 啟動 SNAP 伺服器模擬器。
  3. SnapMobileSample.jad 檔案中的「SNAP-Mobile-Host」特性變更為執行 SNAP 伺服器模擬器的機器名稱。

我在 Windows 98 SE 上安裝成功,但仍存在某些問題。

Windows 98 SE 不是受支援的平台。Windows XP 是唯一受支援的平台,如 docs/BinaryReleasNotes.html 中所述。

一般問題

如果此工具組是用 Java 編寫的,為何要等那麼久才能在其他平台上使用?

儘管工具組的使用者介面是用 Java SE 編寫,但產品中還包含大量特定平台的原生碼,包括 Java ME 虛擬機器的完整實作。每個平台均需單獨移植、測試並維護原生碼。

我已更新 JDK。如何讓模擬器使用已更新的 JDK?

您無法將模擬器指向另一安裝。您可以將新的 JDK 安裝在原來舊 JDK 的相同位置,也可以解除安裝然後重新安裝,同時提供新 JDK 的路徑。

最快的入門方法是什麼?

要開始使用 KToolbar,請嘗試開啟某些示範專案並執行它們。您也可以檢查並修改這些示範檔案的原始碼。如需更多資訊,請按這裡

我可以從指令行使用工具組嗎?

可以。如需更多資訊,請參閱「使用者指南」附錄 B。

哪裡可找到關於 MIDP、CLDC、MMAPI 和 WMA 的更多資訊?

如需更多資訊,請使用下列連結:

我可以為 MIDP 1.0 裝置建立應用程式嗎?

是的,您可以為各種軟體堆疊建立應用程式。按一下 [設定...] 按鈕以編輯專案設定,然後在 [API 選擇] 標籤上選擇所需配置、設定檔以及選擇性套裝軟體。

我已建立一個新專案。現在該怎麼做?

下一步是編輯專案的原始碼。KToolbar 主控台中的訊息會告訴您原始碼、資源檔案以及程式庫檔案應該放在哪裡。如果您仍不確定該怎麼做,可參閱「使用者指南」第 2 章中提供的簡單範例。

專案中的 Java Application Descriptor (JAD) 和 Java Archive (JAR) 檔案在哪裡?

首先,您必須從 [KToolbar] 功能表中選擇 [專案] > [套裝軟體] > [建立套裝軟體] 來封裝專案。MIDlet 套裝軟體描述元和 JAR 檔案置於專案的 bin 目錄中。

我的專案目錄建立以後可以變更嗎?

編輯 wtklib/Windows/ktools.properties 以增加以下特性:
kvem.apps.dir = 新建專案目錄

如需完整的專案管理功能,請考慮使用 NetBeans Mobility Pack

我可以使用混淆器嗎?

可以。此工具組支援 ProGuard 並包括支援任何混淆器的架構。如需更多資訊,請參閱「使用者指南」。

我可以使用除錯程式嗎?

可以。您最好將 Sun Java Wireless Toolkit for CLDC 與 IDE 中的除錯程式配合使用。「使用者指南」中提供了有關使用除錯程式的更多資訊。

如何確定應用程式只使用了特定的 API,例如只使用 MIDP 2.0 API?

在 [設定] 對話方塊中選取 [API 選擇] 標籤,然後選取您要使用的目標平台及 API。

我可以在 Java ME 應用程式中使用 HTTP 和 HTTPS 以外的網路協定嗎?

可以。MIDP 2.0 規格引進對通訊端、伺服器通訊端、資料封包、SSL 和序列 (COMM) 通訊的可選支援。WMA 規格還支援 SMS、CBS 以及 MMS 訊息傳送。工具組對 JSR 75 與 JSR 82 的支援還新增了檔案、藍芽與 OBEX 連線。

我如何測試推送註冊表?

若要觀察為了回應內送網路連線而啟動的 MIDlet,您需要利用「透過 OTA 執行」的功能來執行應用程式。「透過 OTA 執行」會模擬在裝置上安裝應用程式的程序,然後根據推送註冊表中的項目正確回應內送網路連線。如需更多資訊,請參閱「使用者指南」。

在 Linux 上執行時如何存取通訊埠?

您必須在指令行設定以下權限 (請注意:您必須擁有超級使用者權限):

chmod a+w /dev/ttyS[01]

我該如何將 MIDlet 套裝軟體傳輸到實際裝置?

那完全要視裝置而定。支援 MIDP 的所有裝置製造商都必須提供機制,以將 MIDlet 傳輸到自己生產的裝置。

我可以將 Wireless Toolkit 連線到外部藍芽裝置 (例如行動電話) 嗎?

不可以,Wireless Toolkit 無法與無線裝置通訊。

模擬器問題

為何模擬器會詢問我是否可以連線至網路?

根據執行應用程式所在的保護網域的不同,模擬器可能要求擁有執行特定作業的權限,包括網路存取權。關於 MIDP 2.0 中權限與保護網域的簡介,請參閱「Understanding MIDP 2.0's Security Architecture」

雖然我沒在 API 選擇專案設定中選取 API,卻仍然可以在模擬器中使用 API。為什麼呢?

API 選擇專案設定僅適用於建立過程。模擬器總是支援所有可用的 API。

模擬器不能正確顯示非英文語言的文字。我應該如何變更字型?

若要以非英文語言顯示文字,請遵循以下步驟之一:

模擬器顯示的裝置影像太小。我如何將它放大?
如何在模擬器中啟用觸控式螢幕事件?
如何變更裝置可用的字元編碼轉換器集?

有關修改預設模擬器的資訊,請參閱「基本自訂指南」。

排解疑難問題

我在將示範應用程式 MIDlet 部署到實際裝置時遇到問題。這是怎麼回事呢?

某些示範 MIDlet 是為 MSA 平台建立的,並使用 MIDP 2.1 設定檔 (請檢查其 .jad.jar 檔案)。許多裝置不支援如此新的設定檔。若要變更您的專案設定以符合裝置相容性,請按一下 [設定...] 按鈕。在 [設定] 視窗中按一下左側的 [API 選擇]。在 [API 選擇] 窗格中,選擇 MSA 之外的目標平台以及 MIDP 2.1 之外的設定檔。選取配置以及任何可選套裝軟體。按一下 [確定]。

我的 MIDlet 無法與我的伺服器進行通訊,這是怎麼回事呢?

請確定您的伺服器使用正確版本的 HTTP。可以在 KToolbar 偏好中調整模擬器使用的版本。使用網路監視器是解決網路問題的有效方法。如需詳細資訊,請參閱「使用者指南」。

連線可能會因為您使用防火牆而失敗。請至 [個人喜好] > [網路配置] > [使用者代理伺服器] 並提供您的代理資訊。

我的裝置為何無法辨識簽署的 MIDlet 套裝軟體?

真實網路上的實際裝置可能有特定製造商或無線通信業者專屬的根憑證。請洽詢裝置的製造商或無線通信業者,取得有關簽署的 MIDlet 詳細資訊。

我用一個可信任的金鑰為 MIDlet 加上簽名,但是將其安裝到我的裝置上時,此 MIDlet 卻分類為不可信任。這是怎麼回事呢?

專案的安全性策略不符合裝置的安全性策略時,可能會發生這種情況。模擬器可以把安全性策略切換為 MSA 或 JTWI,但裝置不能。不是 MSA 就是 JTWI,不可能兩者兼具。為避免此類問題,您必須確保 MIDlet 的安全性策略符合裝置的安全性策略。

例如,假設您使用 MSA 安全性策略開發 MIDlet。然後使用名為 trustedkey 的預設簽署憑證為 MIDlet 加上簽名,此 trustedkey 有一個對應的根憑證,屬於 MSA 安全性策略的製造商網域。接下來您決定將此 MIDlet 安裝在執行 JTWI 的實際裝置中。您將此模擬器安全性策略切換至 JTWI 並開始透過 OTA 安裝。模擬器會在製造商網域找到 trustedkey 的根憑證。這是一個問題,因為 JTWI 安全性策略中沒有製造商,所以不會把該 MIDlet 識別為可信任 MIDlet。安裝過程中,模擬器會顯示憑證的內容並要求您確認安裝。安裝雖然成功,但 MIDlet 被認為不可信任。裝置上的安全性策略無法辨別根憑證時,只會有這種運作模式。

執行 MIDlet 時出現安全警示。為何我無法關閉該警示?

您可能正嘗試從 commandAction() 方法存取受保護的 API (例如開啟連線),此舉會鎖定 UI 執行緒。請從不同的執行緒存取受保護的 API。關於如何完成此動作的範例,請參閱 NetworkDemo。

我執行模擬器時模擬器當機,並顯示以下訊息之一。我應如何解決?

Title:drwtsn32.exe - Unable To Locate Component
Content:This aplication has failed to start because dbgeng.dll was not found.

Re-installing the application may fix this problem.

Error:Can not find soundbank path in registry.

您的 Windows 安裝缺少以下一個或多個檔案:

windows-directory\system32\drivers\gm.dls
windows-directory\system32\drwatson.exe
windows-directory\system32\dbgeng.dll

請將缺少的檔案從標準 Windows 安裝複製到出現問題的安裝然後重新啟動。

我在使用連接到網際網路的應用程式時收到錯誤碼。我需要在工具組中變更設定嗎?

可以。選取 [個人喜好] > [網路] > [代理伺服器],並指定您的代理資訊。

JSR172Demo 呼叫 sunwireless.quimbik.com,但伺服器未回應。有其他可以使用的伺服器嗎?

有。JSR172Demo 使用 http://cds.cmsg.sun.com:80/serverscript/serverscript

為何在執行預檢驗器時,出現 Error loading class... 訊息?

首先,請檢查 Java 原始碼和程式庫是否可以使用 CLDC 和 MIDP API。

然後,確定您將 Sun Java Wireless Toolkit for CLDC 安裝在路徑不包含空格的目錄中。例如,此工具組不能使用 C:\Program Files\WTK25 路徑。

如果您將此工具組安裝在路徑含有空格的目錄中,必須先解除安裝,然後重新安裝到路徑名稱不包含空格的目錄中。

我想要使用外部程式庫,但是當我嘗試建立一個使用它的 MIDlet 套件時,卻看到「Error preverifying class...」訊息。為何會這樣?

如果您看到此錯誤訊息,表示您使用的類別程式庫可能是針對 Java 2 Platform, Standard Edition (J2SETM 平台) 而寫的。這個工具組支援 MIDP 應用程式開發,比 J2SE 版本的功能少。

我建立了一個使用協力廠商程式庫的應用程式。不存在編譯或預檢驗問題,但仍收到以下錯誤訊息。我應如何解決?
Uncaught exception java/lang/NoClassDefFoundError:java/awt/Frame:Cannot create class in system package.

若要使用協力廠商程式庫,請參閱 [專案] > [特性] > [外部 API],並參閱「使用者指南」。請注意,由於安全性限制,您無法在系統套裝軟體 (例如,javajavax.、com.sun.) 中建立類別。

我編寫了一個用於傳送 SMS 訊息的應用程式但失敗了,訊息為「Type not supported (類型不受支援)」。

您應當傳送 MessageConnection.TEXT_MESSAGE 並增加如下有效負載:

smsconn = (MessageConnection)Connector.open(address);

TextMessage txtmessage = (TextMessage)smsconn.newMessage(
MessageConnection.TEXT_MESSAGE);
txtmessage.setAddress(address);
txtmessage.setPayloadText(messageBox.getString());
smsconn.send(txtmessage);

請參閱 SMSDemo 範例以取得完整的程式碼範例。

我有其他問題,但在此找不到答案。

請嘗試開發者論壇,或到 developer.sun.com 把意見傳送給我們。