java.lang.NullPointerException
がjava.awt.Graphics.drawImage()
でスローされる
症状Sun JavaTM Runtime Environment (JRETM) を使ってブラウザ内でアプレットを実行すると、
java.awt.Graphics.drawImage()
メソッド によってjava.lang.NullPointerException
がスローされます。同じアプレットが、Microsoft Virtual Machine (VM) の下では何のエラーもなく実行されます。原因
この例外は、Sun JRE で null イメージが
drawImage()
メソッドに渡されるために起こります。Sun JRE の Java クラスライブラリは時間の経過とともに変化してきました。詳細になった API もあれば、廃止された API もあります。また、実装が変更された API もあります。
Graphics.drawImage()
メソッドに null イメージを渡した場合の結果は、明確に定義されていませんでした。Microsoft VM は null イメージを無操作として扱います。ところが、Sun JRE のほとんどのバージョンは null を有効なイメージとして受け入れないため、java.lang.NullPointerException
が発生します。JRE バージョン 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);
詳細情報
なし。