質問: new BufferedReader(new InputStreamReader(System.in)); try{ stdReader.readLine(); stdReader.close(); } catch (Exception e){ e.printStackTrace(); } finally{ System.out.println("処理が終了しました"); } } } ```
回答: 2の例外スタックトレースが出力されるのは1.6(以前?)のjavaコマンドですね。 昔別件で調べたのですが、6と7(以降)ではブートローディングの処理が結構変わっています。起動時エラーメッセージ出力の実装も変わっており、**`java`コマンドのエラーメッセージ**を統一することは不可能でしょう。 (引数に渡されたクラスを実行するようなラッパークラスを自前で実装すれば、Java6実行時とJava7以降実行時でメッセージを統一させることは可能かと。自分の実装した部分でエラーを出すわけですからね。) 本題からは逸れますが、 jarを実行する場合には `java -jar JarSample.jar` というように、`-jar`オプションを付ける必要があります。 `java JarSample.jar` だと、`JarSample`パッケージの`jar`という名前のクラスを実行するという意味になります。 下記も参照してみてください。 * 環境変数を設定していても、jarファイルを作ったときにクラスファイルが入りません。(23116)|teratail