【问题标题】:Blackberry: Exception thrown no application instance at app startup黑莓:应用程序启动时没有应用程序实例抛出异常
【发布时间】:2010-12-29 16:41:52
【问题描述】:

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

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

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

我确实运行了 clean.bat 文件、擦除文件系统等解决方法来清除档案,但直到现在还没有运气。 有人可以正确指导我解决此问题的方法吗?

【问题讨论】:

    标签: blackberry


    【解决方案1】:

    我假设完整的例外是:“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

    【讨论】:

    • 嗨,正如你提到的,我有相同的代码。但我也在模拟器上的应用程序启动期间观察到相同的异常崩溃。您的解决方案代码也没有运气..
    • 如果可以,查看 main() 的副本可能会有所帮助。或者甚至更好的是创建一个错误的复制品,将其简化为导致错误的最简单的位。在不知道您在 Main 中做什么的情况下,很难“猜测”错误是在哪里产生的。祝你好运!
    猜你喜欢
    • 2011-06-05
    • 2015-11-14
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-30
    相关资源
    最近更新 更多