私はJava7でOCP試験の準備をしています。私が読んでいる本は、私が完全に理解していない何かに出くわします。
あれは、
JVMがIDEによって間接的に呼び出された場合、またはJVMがバックグラウンドプロセスから呼び出された場合、メソッド呼び出し
System.console()
は失敗し、nullを返します。
どのような場合に、どのようにバックグラウンドプロセスからJVMを呼び出しますか?誰かがそれについて詳しく説明できますか?宜しくお願いします
UNIXシステムを使用していて、2つのオペランドを要求し、それらの合計を生成できるプログラムを実行するとします。次のように呼び出す場合:
/home/ucas> java -jar add.jar
Please enter the first summand:
42
Please enter the second summand:
17
The sum is 59.
ここで、バックグラウンドで実行するとします。
/home/ucas> java -jar add.jar &
java.lang.NullPointerException at Add.main(Add.java:17)
....
Add.javaを見ると、次のことがわかります。
Console console = System.console(); // 16
Reader reader = console.reader(); // 17
プロセスは端末から切り離されているので、にconsole
なりますnull
。スタックトレースは、リダイレクトされない標準エラーに出力されます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加