【发布时间】:2010-12-29 16:41:52
【问题描述】:
最近,我注意到对于我运行的任何 BlackBerry 项目,JDE 都会抛出错误消息
抛出异常:没有应用程序实例...
我什至检查了一个示例 hello world 项目,它最终遇到了同样的问题。
我确实运行了 clean.bat 文件、擦除文件系统等解决方法来清除档案,但直到现在还没有运气。 有人可以正确指导我解决此问题的方法吗?
【问题讨论】:
标签: blackberry
最近,我注意到对于我运行的任何 BlackBerry 项目,JDE 都会抛出错误消息
抛出异常:没有应用程序实例...
我什至检查了一个示例 hello world 项目,它最终遇到了同样的问题。
我确实运行了 clean.bat 文件、擦除文件系统等解决方法来清除档案,但直到现在还没有运气。 有人可以正确指导我解决此问题的方法吗?
【问题讨论】:
标签: blackberry
我假设完整的例外是:“IllegalStateException:没有应用程序实例”。由于您没有向我们提供代码的许多详细信息,因此我将仅谈谈我经常遇到此异常的地方。
这通常是由于在调用应用程序的构造函数之前尝试获取应用程序实例造成的。例如,以下代码将创建该错误:
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 并移入应用程序的构造函数中。
这是一个谷歌搜索,它将产生一个来自 6.0 API 的类列表,这些类会产生这个异常:
抛出 IllegalStateException 黑莓 网站:www.blackberry.com/developers/docs/6.0.0api
【讨论】: