我为CLDC平台开发了一个Java ME应用程序。它在模拟器中执行时工作正常。但当我将它部署到我的N70手机时,手机中的应用程序根本无法启动。在我的应用程序中有大约14个类,我正在创建每个类的实例,并将它们放在应用程序启动的向量中。这些类只有一个变量和两个方法。这种大量实例的创建能否成为崩溃的原因?
有什么方法可以找出应用程序无法在手机中启动的原因吗?
更新: 它在模拟器上运行良好。还有一件事我要提的是 - 代码只在创建这14个实例并将它们添加到向量的位置停止执行。直到这一点,代码执行得很好。
答案 0 :(得分:3)
这可能取决于您在创建这些实例的代码中的位置。如果要在MIDlet构造函数或startApp方法中创建它们,请尝试将初始化移动到应用程序的run方法中。
调试不能在手机上启动的J2ME应用程序的一种方法是在代码中添加“printf”样式调试消息,以便在记录存储系统中写入,并在应用程序中添加另一个MIDlet以从RMS读取并显示那些消息。 或者您可以只评论一些代码并查看它是否有效。
答案 1 :(得分:2)
您可以在设备上进行调试。如果您使用的仿真器是诺基亚SDK的一部分,那么其他地方应该有设施来进行设备上的测试和调试。 (我会在此发布更多详细信息,但我最近只使用索尼爱立信手机完成了此操作。)
另一种选择是使用Nokia tools,允许您查看应用程序在您的设备上运行时的标准输出和错误(例如通过蓝牙)。
答案 2 :(得分:2)
您的应用程序实际崩溃Java虚拟机字节码解释器线程并终止整个本机进程的可能性非常小。
之前已经发生过,但在确信实际崩溃之前,您需要消除其他几个潜在的问题。
更有可能是:
由于MIDlet安装程序应该阻止您安装错误的MIDlet,因此更有可能发生未捕获的异常问题。
如何找到未捕获的异常:
Form
,这样您就可以在屏幕顶部轻松插入更多StringItem
。Thread
MIDlet.startApp()
Thread.run()
时,添加try{}catch(Throwable){}
块。您可以使用表单日志记录来确保不输入无限循环,显示异常类和消息,标记逻辑里程碑,以显示变量值...
这是弄清楚发生了什么的第一步。
答案 3 :(得分:0)
我也遇到了类似的问题,当我将MIDLET重新编译为Midlet 1.0时,它运行良好。似乎N70无法运行新版MIDLET。我认为你降级并重新测试你的midlet。
此致
朱奈德