【问题标题】:Catching java.lang.Error捕获 java.lang.Error
【发布时间】:2011-03-24 17:36:12
【问题描述】:

我正在为 J2me 和 Blackberry 开发一个 Javame 框架。我从设备读取类型(bb 或 j2me),然后根据检测到的设备加载正确的类。

只有我在执行以下代码时会收到 java.lang.error。我认为那是因为我在 KuixCanvasBB 中使用了 j2me 不支持的黑莓包。但是有没有办法捕捉到这个错误?

    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

我可以在不关闭应用程序的情况下发现此错误吗?

【问题讨论】:

    标签: blackberry java-me mobile


    【解决方案1】:

    由于许多 J2ME 虚拟机会在运行任何内容之前验证所有代码,因此即使在许多设备上安装这些代码也很容易被拒绝。

    更安全的解决方案可能是在构建时做出决定,因为无论如何最终构建都需要单独的 .jar 文件。

    您收到错误的原因可能是因为一旦在 JVM 上输入该方法,对其他类的引用就会得到解决。

    【讨论】:

    • 所以为了在构建时做出决定,我需要创建一个自定义 ant 构建器?
    猜你喜欢
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-27
    • 1970-01-01
    相关资源
    最近更新 更多