私はJavaでコマンドラインアプリケーションを少し書いて、新しいクラスjava.io.Consoleを使いたいと思っていました。私はSystem.console()を使ってこのクラスのインスタンスを取得します。この呼び出しは、 'java -jar MyApp.jar'を介してアプリケーションを呼び出すと動作するコンソールを返しますが、antのjava-taskを使用してアプリケーションを実行すると設定解除されます。この呼び出しではforkは真でspwanはfalseです。なぜこの違いがあるのですか(System.out.print()はantの下でうまく動作します)?私が蟻を介して私のアプリケーションを起動した場合でも、私はどのようにコンソールを使うことができますか?Javaで実行するとSystem.console()が設定され、ant経由で実行される場合はunsetされるのはなぜですか?
答えて
this method状態のJavadoc:もしあれば
は、現在のJava仮想マシンに関連付けられた一意のConsoleオブジェクトを返します。
そしてSystem.Console
クラスの状態のためのドキュメント:
仮想マシンコンソールを持っているかどうかは、基盤となるプラットフォームの際にも仮想マシンが起動される方法に依存しています。標準入出力ストリームをリダイレクトせずに仮想マシンを対話型コマンドラインから起動すると、そのコンソールが存在し、通常は仮想マシンが起動されたキーボードとディスプレイに接続されます。仮想マシンがバックグラウンドジョブスケジューラなどによって自動的に起動される場合、通常はコンソールがありません。
Antが新しいJavaプロセスをフォークすると、標準出力がリダイレクトされると思います。
'System.Console'は実際に役に立つでしょうか?ユーザーがストリームをリダイレクトしないことは期待できません。 –
コンソールに読み書きする細かい機能が必要な場合。おそらく、ある種のcursesのような動作をしている場合です。私はあなたのアプリがヌルであるかどうかをチェックし、出力がリダイレクトされた場合に別のタイプの動作に分岐したいと思うでしょう。 –
btw、「cursesのような行動」と言ったときの言葉:http://en.wikipedia.org/wiki/Curses_(programming_library)とhttp://en.wikipedia.org/wiki/Ncurses –
入力または出力がリダイレクトされる場合、System.console()は nullを返します。アントはそれだけです。
まあ、antは、ビルドの自動化ツールです。通常、インタラクティブなアプリケーションはビルドの自動化の中ではほとんどまたはまったく存在しないので、antを使ってタスクを実行するときにコンソールを取得しないということはまったく予期しないことではありません。
ant javaタスクがjava.exeの代わりにjavaw.exeを使用しているようです。 javawにはコンソールが接続されていません。
- 1. Pythonスクリプトがコマンドライン経由で実行されないのはなぜですか?
- 2. なぜbind_resultが実行される前に実行されるのですか
- 3. tryブロックで返された場合でも、finallyでコードが実行されるのはなぜですか?
- 4. Javaコードが実行されないのはなぜですか?
- 5. 条件が実行されると、単純なJavascriptが実行されないのはなぜですか?
- 6. DataContextが設定されていると、検証規則が実行されないのはなぜですか?
- 7. invokeLaterがメインスレッドで実行されるのはなぜですか?
- 8. テストはmavenとadbで実行されますが、IntelliJでは実行されません - なぜですか?
- 9. exec()はコマンドライン経由で実行されますが、Webでは実行されません
- 10. JQuery:beforeSendのコードが実行される前にajaxリクエストが実行されるのはなぜですか?
- 11. paintComponentが2回実行されるのはなぜですか?
- 12. Java-Spring-quartz:ループでジョブが実行されるのはなぜですか?
- 13. CSS3アニメーションは、displayプロパティがnoneに設定されている場合でも実行されますか?
- 14. Java - なぜsystem.exit(0)が実行されないのですか?
- 15. なぜこのjavascriptはChromeでは実行されますが、Firefoxでは実行されませんか?
- 16. なぜAndroid上でjavascriptが実行されるのですか?
- 17. RestTemplate経由で実行されるPATCHを実装するにはどうすればよいですか?
- 18. 私のnode-oracledbはなぜ実行されるのですか?
- 19. Antファイルがクラスファイル経由でJavaアプリケーションを実行できない
- 20. Citrix経由で実行されているアプリケーションはローカルインターフェイスでリッスンしますか?
- 21. アプリケーションがCitrix Presentation Server経由で配信されるアプリケーションのどこから実行されるのですか
- 22. SSIS実行SQLタスクがSQLエージェント経由で実行されない
- 23. 文が実行されない場合
- 24. アイドル時に変換が実行され、プログラムは実行されないのはなぜですか?ここ
- 25. ステートメントが実行されている場合、これはなぜ偽ですか? (C#)と
- 26. Java SWT:CanvasでMenuItemリスナーが実行されないのはなぜですか?
- 27. 保護された文が実行されないのはなぜですか?
- 28. Javascriptコードが実行されないのはなぜですか?
- 29. ターゲットが実行されないのはなぜですか?
- 30. イベントが実行されないのはなぜですか?
Emacsでこの種のプログラムを起動したときに同じ問題が発生していることに気付きました。 –