2011-03-24 82 views
0

我正在爲J2me和Blackberry開發Javame框架。我從設備中讀取類型(bb或j2me),然後根據檢測到的設備加載正確的類。捕捉java.lang.Error

只有在執行下面的代碼時,我得到一個java.lang.error。我認爲這是因爲我在jix不支持的KuixCanvasBB中使用黑莓軟件包。但是有沒有辦法來捕捉這個錯誤?

KuixCanvas canvas; 
     if(Settings.j2me) { 
      System.out.println("j2me"); 
      canvas = new KuixCanvasJ2me(this, isFullscreen()); 
     } 
     else { 
      System.out.println("BB"); 
      try { 
      canvas = new KuixCanvasBB(this, isFullscreen()); 
       //canvas = new KuixCanvasJ2me(this, isFullscreen()); 
      } 
      catch (java.lang.Error e) { 
       canvas=null; 
      } 
     } 

執行上面的代碼時,我仍然得到一個錯誤:

java.lang.Error: ClassFormatError: 154 
- java.lang.Class.invoke_verify(), bci=0 
- java.lang.Class.initialize(), bci=117 
- java.lang.Class.initialize(), bci=139 
- java.lang.Class.forName(), bci=0 

我能趕上,沒有應用程式關閉這個錯誤?

回答

3

由於許多J2ME VM在運行任何代碼之前都會驗證所有代碼,所以即使在許多設備上進行安裝,這些代碼也很容易被拒絕。

一個更安全的解決方案可能會將此作爲構建時間的決定,因爲無論如何,最終構建都需要單獨的.jar文件。

您收到錯誤的原因可能是因爲在JVM上輸入方法後,其他類的引用就會得到解決。

+0

因此,爲了使這個建立時間的決定,我需要創建一個自定義的螞蟻生成器? – Vincent 2011-03-24 09:44:07