java - 如果 System.console() 是通过java执行的,为什么设置为如果通过 Ant 执行?

  显示原文与译文双语对照的内容

我在Java中编写了一个小命令,希望使用这个新的类 java.io.Console 。 我使用 System.console() 来获取这个类的实例。 如果我通过'java jar myapp.jar'调用应用程序,但如果我通过 Ant 任务执行应用程序,那么这个调用将返回一个工作控制台。 fork 是这里调用的true 和 spwan false 。 为什么( system.out.print ( ) 在 Ant 下工作正常? 如何使用控制台,如果我通过 Ant 启动应用程序?

时间: 作者:

这里方法的的java doc状态:

返回与当前Java虚拟机关联的唯一控制台对象,如果有的话。

System.Console 类状态的文档:

虚拟机是否具有控制台依赖于底层平台,也依赖于虚拟机的调用方式。 如果虚拟机从交互式 命令行 启动而不重定向标准输入和输出流,则它的控制台将连接到虚拟机。 如果虚拟机自动启动,例如由后台作业调度程序,则通常它将没有控制台。

当 Ant 派生一个新的Java进程时,它会重定向标准输出。

作者:
...