Java ME应用程序在模拟器中运行正常,但部署到N70时会崩溃。有什么方法可以确定崩溃的原因?

StackOverflow https://stackoverflow.com/questions/2776347

  •  03-10-2019
  •  | 
  •  

我已经为CLDC平台开发了Java ME应用程序。在模拟器中执行时,它可以正常工作。但是,当我将其部署到我的N70电话时,该应用程序在手机中根本没有启动。在我的应用程序中,有大约14个类,并且正在创建每个类别的实例,并将其放入矢量启动时。这些类只有一个变量和2种方法。这可以创建很多实例是崩溃的原因吗?

有什么办法可以找出该应用程序无法在手机中启动的原因?

更新:在模拟器上运行良好。我想提到的另一件事是 - 代码仅在创建这14个实例并将其添加到向量的时候停止执行。到那时,代码执行正常。

有帮助吗?

解决方案

这可能取决于您在代码中创建这些实例的位置。如果要在Midlet构造函数或StartApp方法中创建它们,请尝试将初始化移动到应用程序的运行方法中。

不在手机上启动的J2ME应用程序调试的一种方法是在您的代码中添加“ printf”样式的调试消息,以写在记录存储系统中,并在您的应用程序中添加另一个Midlet,以从RMS读取并显示这些消息。或者,您可以只评论代码的位,看看它是否有效。

其他提示

您可以在设备上调试。如果您使用的模拟器是诺基亚SDK的一部分,那么其他地方应该有设施进行设备测试和调试。 (我会发布更多的详细信息,但我最近只使用索尼爱立信手机来完成此操作。)

另一个选择是使用 诺基亚工具 这使您可以在设备上运行应用程序时查看标准输出和错误(例如,通过蓝牙)。

您的应用程序实际上崩溃了Java虚拟机字节码解释器线程并终止整个本机过程的可能性很小。

它以前发生了,但是您需要消除其他一些潜在问题,然后才能确信实际崩溃。

更有可能:

  • 您的中线未创建或未启动,因为MIDP运行时确定它不正确。
    或者
  • 您的中途只是抛出了您没有抓住的例外,这可能使它看起来像是残酷终止的。

由于Midlet安装程序应该阻止您安装不良的Midlet,因此更有可能的例外问题。

如何找到一个未知的例外:

  • 从最简单的helloworld midlet开始 Form 因此您可以轻松插入更多 StringItemS在屏幕顶部。
  • 创建并开始新的 ThreadMIDlet.startApp()
  • 在你的替代 Thread.run(), ,添加一个 try{}catch(Throwable){} 堵塞。
  • 在该块内,请尽一切原始的Midlet所做的一切。
  • 将表格用作调试的标准输出。

您可以使用表单记录来确保您不会输入无限循环,以显示异常类和消息,以标记逻辑里程碑,以显示变量值...

这是弄清楚发生了什么的第一步。

我也面临类似的问题,当我将Midlet重新编译为Midlet 1.0时,它的工作正常。似乎N70无法运行新版本的Midlet。我认为您降级并重新测试您的中Midle。

问候

朱纳德

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top