Ошибка запуска Java в другом каталоге от муравья - PullRequest
0 голосов
/ 10 марта 2011

У меня есть простой класс 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.

Ответы [ 2 ]

1 голос
/ 10 марта 2011

Пути в муравье обычно называются так:

<java classname="client.FabricClient"
    fork="true"
    failonerror="true"
    dir="./bin">
    <classpath>
         <pathelement location="C:/dir/my.jar"/>        
    </classpath>

более читабельно и надежно

0 голосов
/ 10 марта 2011

Ваш путь к классу должен содержать файл my.jar, а не каталог , где my.jar.

...