Blackberry:异常在app启动时没有抛出应用程序实例

时间:2010-12-28 19:00:00

标签: blackberry

最近,我注意到对于我运行的任何BlackBerry项目,JDE会抛出错误消息

  

抛出异常:没有应用程序实例......

我甚至检查了一个示例hello world项目,最终遇到了同样的问题。

我确实运行了clean.bat文件,擦除文件系统等工作以清除档案,但直到现在都没有运气。 有人可以正确指导我应该解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

我假设完整的异常是:“IllegalStateException:没有应用程序实例”。由于您没有向我们提供有关代码的许多详细信息,因此我将仅谈谈我在此异常中遇到的问题。

这通常是在调用Application的构造函数之前尝试获取应用程序实例时引起的。例如,以下代码将创建该错误:

public class HelloWorld extends UiApplication
{
    public HelloWorld(){     
        pushScreen(new HelloWorldScreenBlank());
    }
    public static void main(String[] args) {
        Application app = Application.getApplication();
        HelloWorld theApp = new HelloWorld();
        theApp.enterEventDispatcher();
    }
}

此代码生成以下控制台代码:

llegalStateException
no application instance
net_rim_cldc-8(4B84A78F)
 Application
 getApplication
 0x2EFA
HW_5$2e0(4D1A6F55)
 HelloWorld
 main
 0x167

但以下代码不会产生异常:

public class HelloWorld extends UiApplication
{
    public HelloWorld(){     
        Application app = Application.getApplication();
        pushScreen(new HelloWorldScreenBlank());
    }
    public static void main(String[] args) {
        HelloWorld theApp = new HelloWorld();
        theApp.enterEventDispatcher();
    }
}

这是有效的,因为Application实例是在UiApplication对象的构造函数中实例化的。和前面的代码一样,我们试图在Application对象存在之前获取实例。

我经常遇到尝试从main()或静态块启动GPS。但是有一些类隐式调用getApplicaiton,所以如果你没有显式调用getApplication,那么可能是你调用的API调用。如果可以的话,我会尝试将代码移出main并进入Application的构造函数。

以下是Google搜索,它将生成6.0 API中的类列表,这些类会产生此异常:

  

抛出IllegalStateException   黑莓   网站:www.blackberry.com/developers/docs/6.0.0api