У меня есть простой класс FabricClient в пакете-клиенте с открытым статическим void main (). Этот пакет находится в каталоге bin моего проекта. Из каталога bin в командной строке я могу выполнить main в этом классе следующим образом:
user@sys /c/projects/myproject/bin
$ java -classpath .;c:\dir\my.jar client.FabricClient
Я хочу выполнить мой файл ant build.xml из родительского каталога (/ c / projects / myproject), из которого я запускаю команду java вручную. Я попытался использовать атрибут dir следующим образом:
<target name="run-client">
<java classname="client.FabricClient"
classpath="${classpath}"
fork="true"
failonerror="true"
dir="./bin">
</java>
</target>
Моя переменная classpath имеет текущий каталог, а также каталог my.jar, используемый в командной строке (моя команда ant для компиляции класса отлично работает с той же переменной)
Вот настройки, используемые для генерации classpath
<property name="my.jar" location="c:\dir\my.jar" />
<property name="classpath" location=".:${my.jar}:." />
Я получаю типичную ошибку java.lang.NoClassDefFound: client / FabricClient
Я использую Ant версии 1.7.0
Если я переместу файл build.xml в bin и удалим атрибут dir, он будет работать нормально. Можете ли вы запустить Java из каталога, отличного от локального каталога? Я думал, что это то, что сделал атрибут dir.