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);
詳細情報
なし