2012-10-19 63 views
0

我刚刚为Series 40平台创建了一个相当简单的Java ME应用程序。该应用在模拟器中完美运行,但是当我将它打包到我自己的Series 40手机时,该应用失败,出现NullPointerException。几乎所有的代码都可以处理数组,因此很难判断出现错误的位置,因为手机的错误报告不包含任何细节。在手机上为诺基亚Series 40手机调试Java ME应用程序

那么如何在电话上调试应用程序? (如果有人能想到为什么应用程序会在手机上出现故障的原因,但不是模拟器(我真的难住这个)请分享。)

回答

3

JavaME的许多经验法则之一是“永远不要相信仿真器 - 总是在多个真实设备上测试“。

NullPointerExceptions是找到最棘手的,但不是不可能的。我通过简单地在设备上输出错误消息来做了很多次。

String error = null; 
Image myImage = null; 

try { 
    myImage = Image.createImage("someImage.png"); 
} catch (Exception e) { 
    error = "Failed to load someImage.png: " + e.toString(); 
} 

然后在你的主循环(对于帆布/ GameCanvas类的东西),做

if (error!=null) g.drawString(error,0,0,0); 

然后开始将大量的try/catch块的代码,无论您在什么创建对象。

如果上述MYIMAGE没有加载,那么你会想

g.drawImage(myImage,0,0,0); 
+0

辉煌的答案!非常感谢,欢迎来到SO。 (即将开始实施它。) – ACarter

1

当确定在哪些异常被抛出块得到一个NullPointerException,你可以在尝试包裹可能的区域/抓住。捕获NullPointerException并抛出一个更难理解的异常,这将有助于缩小范围。所以可以抛出ArithmeticException等。

相关问题