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