2013-09-23 37 views
1

我正在運行已部署的midlet應用程序&在Nokia S60 sdk上運行。我想讓我的應用程序運行在每個java symbor設備上。我試圖運行Java_ME_platform_SDK_3.4應用程序,但在當我試圖將屏幕從登錄切換到主頁的代碼得到一個錯誤ClassFormatError:154>,在Display類中捕獲到異常

HomeForm homeForm=new HomeForm(objLoginMidlet, objCommonBean); 
    Display.getDisplay(objLoginMidlet).setCurrent(homeForm); 

代碼在主場表現如下 -

class HomeForm extends Form 
{ 
    public HomeForm(LoginMidlet objLoginMidlet,CommonBean objCommonBean) 
    { 
     this.objLoginMidlet=objLoginMidlet; 
     this.objCommonBean=objCommonBean; 
     setTimer(); 
     initHomeForm(); 
    } 
} 

我的MIDP設置爲2.1。即使我改成了2.0,但仍然得到例外如下

警告* * *不可信用戶類絕不能放 * **系統類路徑上

TRACE: <at java.lang.Error: ClassFormatError: 154>, Exception caught in Display class 
java.lang.Error: ClassFormatError: 154 
- java.lang.Class.invoke_verify(), bci=0 
- java.lang.Class.initialize(), bci=100 
- ezypoint.forms.LoginForm.register(LoginForm.java:202) 
- ezypoint.forms.LoginForm.commandAction(LoginForm.java:91) 

即使我試圖改變彙編級別,但仍然出現異常。

+0

你能解釋一下這個類是如何編制?我可能沒有解決方案,但我有同樣的問題。 – Vincent

回答

0

我不知道諾基亞S60,但是這種情況通常發生在CLDC設備上,當編譯好的Java類文件被部署而沒有「預先驗證」時。這是在嵌入式JavaME設備上運行它們所需的額外構建步驟。見this StackOverflow question

如果你有一個成熟的開發環境,通常會自動設置(可能需要選擇相應的目標設備)。但是,如果您嘗試自己編譯Java文件,然後在設備上運行它們,則會崩潰。在這種情況下,你需要調用%YOUR_WTK_HOME%\ BIN \ preverify.exe與類文件(也可能添加到您的Ant腳本或類似):

%YOUR_WTK_HOME%\bin\preverify.exe -classpath <your-classpath> -d <your-destination-dir> <your-source-directory>