我在Java中編寫了一個命令行應用程序,並希望爲此使用新的類java.io.Console。我使用System.console()來獲得這個類的一個實例。這個調用返回一個工作控制檯,如果我通過'java -jar MyApp.jar'調用我的應用程序,但是如果我通過ant的java任務執行應用程序,則不會設置。叉是真實的,spwan虛假的這個電話。爲什麼這種差異(System.out.print()在ant下工作正常)?如果我通過ant啓動我的應用程序,我怎樣才能使用控制檯?爲什麼System.console()在使用java執行時設置,如果通過ant執行則設置爲unset?
4
A
回答
7
爲this method狀態的Javadoc:
返回與當前Java虛擬機相關聯的唯一Console對象(如果有)。
而對於System.Console
類狀態下的文檔:
無論是虛擬機具有控制檯取決於底層平臺,也取決於在其中虛擬機被調用的方式。如果虛擬機從交互式命令行啓動而不重定向標準輸入和輸出流,則其控制檯將存在,並且通常會連接到啓動虛擬機的鍵盤和顯示器。如果虛擬機是自動啓動的,例如通過後臺作業調度程序,那麼它通常沒有控制檯。
我會想象,當Ant派生一個新的Java進程時,它會重定向標準輸出。
+0
那麼在哪種情況下`System.Console`實際上是有用的?我不能指望用戶永遠不會重定向流。 – 2009-07-29 12:56:49
2
如果輸入或輸出被重定向,System.console()返回 null。螞蟻就是這麼做的。
1
那麼,螞蟻是一個構建自動化工具。通常,交互式應用程序在構建自動化中幾乎沒有任何地方,所以當通過ant運行任務時,您不會得到控制檯。
0
它看起來像螞蟻Java任務是使用javaw.exe而不是java.exe。 javaw沒有連接到它的控制檯。
相關問題
- 1. 即使沒有設置路徑,爲什麼執行'java'命令?
- 2. 爲什麼在設置$ _SESSION值時會看到執行超時?
- 3. 。如果設置了hot_deploy,則不會執行.openshift/action_hooks/post_start_php。爲什麼?
- 4. 如果自定義變量設置爲true,則執行任務
- 5. 爲MySQLi查詢執行設置超時
- 6. 如何通過設置變量從Java執行命令行
- 7. 爲什麼IDENTITY_INSERT被設置爲執行或運行時而不是解析時?
- 8. 通過腳本設置循環執行
- 9. 通過shell_exec設置java代碼執行時間限制
- 10. 如何使用jQuery爲ajax post設置最長執行時間?
- 11. 如何在執行時設置spring bootstrap.properties
- 12. 爲什麼keras只有在設置爲300時纔會執行10個紀元?
- 13. 爲Maven Embedder執行設置記錄器
- 14. 執行方法總是設置爲true
- 15. 爲什麼這個requestAnimationFrame設置無法正確執行?
- 16. 爲什麼umask 001不設置執行權限?
- 17. 爲什麼我需要設置cookie,如果session_start自動執行它?
- 18. 如果EF只設置一個變量,爲什麼執行此UPDATE語句?
- 19. apache設置塊執行php exec()執行
- 20. 如果@@ rowcount> 0將@@ rowcount重置爲0,則執行。爲什麼?
- 21. 爲什麼通過執行「捲曲-r」
- 22. 如何在執行主要升級時將UILevel設置爲INSTALLUILEVEL_BASIC?
- 23. 如何在PHP中爲特定執行設置超時?
- 24. 如何在啓動時爲powershell_ise設置執行策略?
- 25. 如何設置AsyncTask執行超時?
- 26. 通過java代碼執行Ant腳本時使用log4j
- 27. 在執行時設置php優先
- 28. 在OSX中將Java SE 6設置爲執行環境Eclipse
- 29. 如何使用qmake爲C++項目設置可執行屬性?
- 30. 使用QT Creator如何設置執行級別爲requireAdministrator
我注意到在Emacs中啓動這種程序時遇到同樣的問題。 – 2009-07-29 12:52:19