NullPointerExceptionがjava.awt.Graphics.drawImage()でスローされる
症状アプレットを Sun JRE を使用したブラウザで実行している場合、
NullPointerExceptionがjava.awt.Graphics.drawImageメソッドでスローされます。同じアプレットが Microsoft VM では実行できます。原因
この例外は、Sun JRE で null イメージが
drawImageメソッドに渡されるために起こります。Sun JRE の Java クラスライブラリは時間の経過とともに変化してきました。詳細になった API もあれば、廃止された API もあります。また、実装が変更された API もあります。
null イメージを
Graphics.drawImageメソッドに渡した場合の結果は詳細に定義されていないため、Microsoft VM では null イメージを無操作として扱います。しかし、Sun JRE のほとんどのバージョンでは null を有効なイメージとして許容しないため、NullPointerExceptionがスローされます。5.0 では仕様が詳細化され、null イメージの引数は無操作として扱われます。解決方法
5.0 以前のバージョンの JRE では、null 以外のイメージだけが
drawImageメソッドに渡されるように対策を講じたコードを記述します。例を示します。
Graphics g = getGraphics();
g.drawImage(img, 100, 100, this);このコードを次のように変更します。
Graphics g = getGraphics();
if (img != null)
g.drawImage(img, 100, 100, this);詳細情報
なし