Late к партии, но какого черта ...
$ {} os.arch только говорит вам, если виртуальная машина является 32/64bit. Возможно, вы используете 32-битную JVM на 64-битной ОС. Попробуйте это:
<var name ="os.bitness" value ="unknown"/>
<if>
<os family="windows"/>
<then>
<exec dir="." executable="cmd" outputproperty="command.ouput">
<arg line="/c SET ProgramFiles(x86)"/>
</exec>
<if>
<contains string="${command.ouput}" substring="Program Files (x86)"/>
<then>
<var name ="os.bitness" value ="64"/>
</then>
<else>
<var name ="os.bitness" value ="32"/>
</else>
</if>
</then>
<elseif>
<os family="unix"/>
<then>
<exec dir="." executable="/bin/sh" outputproperty="command.ouput">
<arg line="/c uname -m"/>
</exec>
<if>
<contains string="${command.ouput}" substring="_64"/>
<then>
<var name ="os.bitness" value ="64"/>
</then>
<else>
<var name ="os.bitness" value ="32"/>
</else>
</if>
</then>
</elseif>
</if>
<echo>OS bitness: ${os.bitness}</echo>
EDIT: Как @GreenieMeanie отметил, это требует библиотеки муравья-вно от ant-contrib.sourceforge.net
Спасибо, это звучит как самый надежный подход. Попробуй это. – 2008-10-21 12:15:46
Осторожно - $ {os.arch} только сообщает вам бит-версию JVM, а не платформу. См. Ответ @ phatypus. – 2011-12-18 14:24:18
Полезно знать - спасибо – 2011-12-18 17:30:55