2011-03-24 51 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