我在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