Задача Ant Java с космическим вопросом - PullRequest
0 голосов
/ 19 июля 2011

Я пытался выполнить файл JAR с помощью скрипта муравья. Как это

<java jar="${jar.file}" fork="true" failonerror="true">
   <arg line="${jar.args}"/>
</java>

jar.file имеет полный путь к файлу jar, а содержит некоторое пространство .

Когда я выполнил это в Linux, проблем не было. Но когда я делаю то же самое в Windows, я получаю сообщение об ошибке. Задача Java не может найти банку! Я пробовал все разные варианты, такие как перенос пути к файлу в кавычках ("), замена пробела на", пробовал экранировать с помощью обратной косой черты и т. Д. Не работает!

Кто-нибудь сталкивался с этой проблемой? Просто интересно, это ограничение Ant или я что-то пропустил.

P.S. Извините, что не предоставил полное сообщение об ошибке, которое я получил. У меня сейчас нет компьютера с Windows. В качестве обходного пути я решил скопировать банку в C: \ и использовал ее вместо этого.

1 Ответ

0 голосов
/ 20 июля 2011

Рекомендуемый способ решения проблем с пространством в свойствах - поместить их в extra '', который должен работать в большинстве случаев, еще лучше использовать путь без пробелов

<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>

и он неожиданно работает также с пробелами в пути, как, например, во фрагменте выше

думал, что стандартный способ решения космических проблем подойдет, как и в других случаях:

"'${property with blanks}'"

но это не так.

...