You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Ant中两次执行<input>任务出现无法读取控制台输入错误

解决Ant连续使用任务报错"Failed to read input from Console"的问题

我之前也碰到过一模一样的问题!先帮你梳理下可能的原因和对应的解决方案:

首先,你提供的代码里有个XML语法错误:第二个<input>标签没正确闭合,XML要求标签要么成对闭合要么用自闭合写法,先把这个修正过来:

<input id="2" message="Please enter password" addproperty="password"/>
<input id="1" message="Please enter username" addproperty="user"/>

如果修正语法后还是报错,那大概率是下面两种情况之一:

1. IDE内置控制台的兼容性坑

很多IDE(比如Eclipse、IntelliJ IDEA)的内置控制台和系统原生控制台的实现逻辑不一样,Ant的<input>任务在这种环境下连续读取输入时容易出问题。

解决办法:

  • 直接切换到系统原生命令行(Windows用cmd/PowerShell,Linux/macOS用Terminal)运行你的Ant脚本,执行ant [你的目标名称],基本就能正常读取两次输入了。

2. Ant版本太低导致的bug

旧版本的Ant(比如1.9.x及更早)存在连续读取控制台输入的已知bug,第二次读取会直接失败。

解决办法:

  • 把Ant升级到最新的稳定版本(比如1.10.x系列),升级后这个问题通常就能直接解决。

备用方案:用Java脚本手动读取输入(万不得已时用)

如果上面的方法都不管用,你可以试试用Ant的<script>任务结合Java代码直接读取控制台输入,这种方式绕开了Ant内置的<input>任务,兼容性拉满:

<target name="getCredentials">
    <script language="java">
        import java.io.BufferedReader;
        import java.io.InputStreamReader;
        try {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            System.out.print("Please enter username: ");
            String user = br.readLine();
            project.setProperty("user", user);
            System.out.print("Please enter password: ");
            String password = br.readLine();
            project.setProperty("password", password);
        } catch (Exception e) {
            e.printStackTrace();
        }
    </script>
    <!-- 测试输出获取到的属性 -->
    <echo>Username: ${user}</echo>
    <echo>Password: ${password}</echo>
</target>

内容的提问来源于stack exchange,提问作者lara_croft

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:08:40