注: この Java 配備ガイドでは、Java SE 6 update 10 リリースより前にリリースされた機能について説明します。最新情報については、Java Rich Internet Application の開発および配備を参照してください。
java.lang.NullPointerException
がスローされるスロー元: java.awt.Graphics.drawString()
Sun Java Runtime Environment (JRE) を使ってブラウザ内でアプレットを実行すると、java.awt.Graphics.drawString()
メソッドによって java.lang.NullPointerException
がスローされます。同じアプレットが Microsoft Virtual Machine (VM) では実行できます。
この例外は、Sun JRE で null 文字列が Graphics.drawString()
メソッドに渡されるために起こります。
Sun JRE の Java クラスライブラリは時間の経過とともに変化してきました。詳細になった API もあれば、非推奨になった API もあります。また、実装が変更された API もあります。
null 文字列を Graphics.drawString()
メソッドに渡した場合の結果は詳細に定義されていないため、Microsoft VM では null を空の文字列として扱います。ところが、Sun JRE の実装は null を有効な文字列として受け入れないため、java.lang.NullPointerException
がスローされます。
null 以外の文字列だけが drawString()
メソッドに渡されるように対策を講じたコードを記述します。たとえば、次のコードを実行したとします
Graphics g = getGraphics();
g.drawString(s, 100, 100);
Graphics g = getGraphics();
if (s !== null) {
g.drawString(s, 100, 100);
}
なし。