我正在尝试在我的桌面上复制Demo.jar文件(由ant任务生成)(或者在我的XP机器上由它的绝对路径指定的任何目录)。
我在属性文件中指定绝对路径并即时读取它。 问题是我无法正确读取这个绝对路径,我想要复制Demo.jar。
属性文件中给出的绝对路径是: -
“C:\ Documents and Settings \ Administrator \ Desktop \ google \ my java”
和脚本回应: -
[echo] C:Documents and SettingsAdministratorDesktopgooglemy java
以下是我编辑的build.xml版本和antParams.properties: -
<project default="copy">
<property file="antParams.properties" prefix="antParams"/>
<target name="jar" >
<jar destfile="${antParams.jarName}"
basedir="${antParams.binDir}"
includes="**/*.class"
/>
</target>
<target name="copy" depends="jar">
<echo>${antParams.jarDestination}</echo>
<!-- what goes here -->
</target>
</project>
jarName=Demo.jar
binDir=bin
jarDestination=C:\Documents and Settings\Administrator\Desktop\
提前完成......: - )
答案 0 :(得分:4)
问题在于读取属性文件,与Ant无关或其识别文件分隔符的灵活性。
如java.util.Properties
documentation,中所述,转义序列以\
开头。如果你想要一个文字反斜杠,你需要转义它:\\
。
......非零偶数 2n 一行之前的连续反斜杠 终结符(或其他地方)编码 n 逃避处理后的反斜杠。
答案 1 :(得分:1)
使用双反斜杠(c:\\ Doc ...),或者更好的是,使用正斜杠(c:/ Doc ...)。 Ant知道如何以跨平台的方式使用正斜杠,它将它正确地转换为窗口上的反斜杠。