我试图通过ant脚本执行一个jar文件。喜欢这个
<java jar="${jar.file}" fork="true" failonerror="true">
<arg line="${jar.args}"/>
</java>
jar.file包含jar文件的完整路径,包含一些空格。
当我在Linux上执行该操作时,没有问题。但是当我在Windows上做同样的事情时,我得到了错误。 java任务无法找到jar!我已经尝试了所有不同的变体,比如用引号(“)包装文件路径,用”替换空格“,尝试用反斜杠转义等等。无效!
有没有人遇到过这个问题?只是想知道这是Ant的限制还是我错过了什么。
P.S很抱歉没有提供我收到的完整错误消息。我现在离开了我的Windows PC。作为一种解决方法,我决定将jar复制到C:\并使用它。
答案 0 :(得分:0)
处理属性中的空间问题的推荐方法是将它们放入 额外'',在大多数情况下应该有效,甚至更好地使用没有空格的路径
<java jar="'${jar.file}'" fork="true" failonerror="true">
<arg line="${jar.args}"/>
</java>
应该有效,正如我在评论中已经提到的那样。
修改强>
你是对的,因为只有jar属性的相对路径,它将无法工作
事实上我想到的是:
<project>
<property name="jar.file" value="foobar.jar"/>
<property name="jar.dir" value="/home/rosebud/temp/path with blanks"/>
<java
dir="${jar.dir}"
jar="${jar.dir}/${jar.file}"
fork="true"
failonerror="true"
>
<arg value="..." />
</java>
</project>
它也意外地工作,路径中的空格为f.e.在上面的片段中
认为处理空间问题的标准方法与其他情况一样适用:
"'${property with blanks}'"
但事实并非如此。