0

Series 40 プラットフォーム用の非常に単純な Java ME アプリケーションを作成しました。アプリはエミュレーターで完全に実行されますが、自分の Series 40 電話にパッケージ化すると、アプリはNullPointerException. ほとんどすべてのコードが配列を処理するため、携帯電話のエラー レポートには詳細が含まれていないため、エラーが発生した場所を特定するのは非常に困難です。

では、電話でアプリをデバッグするにはどうすればよいですか? (そして、アプリが電話では失敗するが、エミュレーターでは失敗する理由を誰かが考えられる場合は(私はこれに本当に困惑しています)共有してください。)

4

2 に答える 2

3

JavaME に関する多くの経験則の 1 つは、「エミュレーターを信頼しないでください。常に複数の実際のデバイスでテストしてください」です。

NullPointerExceptions は、見つけるのが最も難しいものですが、不可能ではありません。デバイスにエラーメッセージを出力するだけで、何度もやりました。

String error = null;
Image myImage = null;

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

次に、メインループ(Canvas / GameCanvas のもの)で、

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

次に、オブジェクトを作成する場所にかかわらず、コードに多数の try/catch ブロックを挿入し始めます。

上記の myImage が読み込まれなかった場合、次のようにしようとすると NullPointerException が発生します。

g.drawImage(myImage,0,0,0);
于 2012-10-19T18:26:08.447 に答える
1

To identify the block in which the exception is being thrown, you could wrap likely areas in try/catch. Catch the NullPointerException and throw a more obscure exception that will help you narrow it down. So one could throw ArithmeticException etc.

于 2012-10-19T20:20:40.280 に答える