如果 ant 是一个 .exe,我会说你的代码应该可以工作。但我怀疑 ant 是一个批处理文件,并且错误发生在 ant 脚本中。
我的结论基于您的错误消息 - 特别是它的以下部分:""==""
. 错误消息是批处理解析错误,我看不出您的代码如何生成这些字符。所以我认为 ant 一定是导致问题的批处理脚本。
我怀疑 ant.bat@echo off
位于顶部,因此您看不到实际失败的行。
由于无法访问 ant.bat 脚本,我无法准确诊断出失败的原因,也无法猜测如何修复它。
更新 - 找到确切的问题
我在网上找到了一份ant.bat。
它包含以下代码行:
if "%ANT_HOME%"=="" set ANT_HOME=%DEFAULT_ANT_HOME%
您对 ANT_HOME 的定义包括引号,因此代码正在尝试执行
if ""C:/Program Files/apache-ant-1.8.4""=="" set ANT_HOME=%DEFAULT_ANT_HOME%
空格没有被引用,你有你的错误。
修复所有问题所需要做的就是从 ANT_HOME 的定义中删除引号,然后在 CALL 语句中添加引号:
set "ANT_HOME=C:/Program Files/apache-ant-1.8.4"
call "%ANT_HOME%/bin/ant" -f ../config/common.xml start_db
正斜杠作为 Windows 中的文件夹分隔符并不总是可靠的。请参阅为什么 Windows 上的 cmd.exe shell 使用正斜杠 ('/'') 路径分隔符的路径失败?.
最好使用反斜杠。
set "ANT_HOME=C:\Program Files\apache-ant-1.8.4"
call "%ANT_HOME%\bin\ant" -f ..\config\common.xml start_db