我在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. 爲什麼在設置$ _SESSION值時會看到執行超時?
- 2. 如果自定義變量設置爲true,則執行任務
- 3. 如何使用jQuery爲ajax post設置最長執行時間?
- 4. 如何在執行時設置spring bootstrap.properties
- 5. 爲什麼keras只有在設置爲300時纔會執行10個紀元?
- 6. 爲Maven Embedder執行設置記錄器
- 7. apache設置塊執行php exec()執行
- 8. 如果@@ rowcount> 0將@@ rowcount重置爲0,則執行。爲什麼?
- 9. 如何在執行主要升級時將UILevel設置爲INSTALLUILEVEL_BASIC?
- 10. 如何在PHP中爲特定執行設置超時?
- 11. 如何在啓動時爲powershell_ise設置執行策略?
- 12. 通過java代碼執行Ant腳本時使用log4j
- 13. 在執行時設置php優先
- 14. 使用QT Creator如何設置執行級別爲requireAdministrator
- 15. 如何使用qmake爲C++項目設置可執行屬性?
- 16. 如何使用JNI爲非可執行JAR設置堆空間
- 17. 爲什麼設置MenuItem.InputGestureText在執行輸入手勢時會導致MenuItem激活?
- 18. 如果設置了會話變量,則會執行重定向
- 19. 爲什麼在執行設置名稱utf8mb4後,列名更改爲問號?
- 20. 使用Powershell自動執行MSMQ設置
- 21. Kubernetes在執行kubeadm重置後未能爲pod設置網絡
- 22. ClassnotfoundException:在爲JUNIT執行Ant腳本時?
- 23. 通過ODBC MSAccess - squirously行爲 - DSN設置
- 24. 在MongoDB Java驅動程序中設置聚合管道執行超時的行爲是什麼?
- 25. 設置exec()的最大執行時間
- 26. 設置時間來執行Javascript函數?
- 27. 如何使用Java執行Windows命令 - 更改網絡設置
- 28. 爲什麼Fiddler在設置爲POST時進行GET操作
- 29. 爲什麼設置$ window.location.href在promise中設置時不起作用?
- 30. 爲什麼這個SQL在MySQL中執行而不是通過Eclipse執行?
我注意到在Emacs中啓動這種程序時遇到同樣的問題。 – 2009-07-29 12:52:19