#java #ant
#java #ant
Вопрос:
Я использую build.xml для сборки моего src. Однако ему не удалось сгенерировать файлы классов без какого-либо сообщения об ошибке. Полный скрипт
<?xml version="1.0"?>
<project name="auxiliary" basedir="." default="dist">
<property name="src.dir" value="../auxiliary-src/com/nextbio/drugbank"/>
<property name="dist.dir" value="dist"/>
<property name="lib.dir" value="../jboss_config/common_app_jars"/>
<property name="temp.dir" value="temp"/>
<property name="foo_dist.dir" value="../foo/dist"/>
<path id="libs-classpath">
<fileset dir="${foo_dist.dir}">
<include name="foo.jar"/>
</fileset>
</path>
<target name="dist" depends="auxiliary-dist" />
<target name="auxiliary-cleanup">
<delete dir="${temp.dir}"/>
<delete dir="${dist.dir}"/>
<echo message="cleaned up. ${temp.dir}, and ${dist.dir} have been deleted."/>
</target>
<target name ="auxiliary-dist">
<delete dir="${temp.dir}"/>
<echo message="delete ${temp.dir}" />
<mkdir dir="${temp.dir}"/>
<javac destdir="${temp.dir}" source="1.6" target="1.6" debug="on" fork="true" memorymaximumsize="1024m">
<src path="${src.dir}"/>
<classpath>
<path refid="libs-classpath"/>
</classpath>
<include name="com/car/**"/> <!-- troubled line -->
</javac>
<!--<copy overwrite="true" todir="${temp.dir}">
<fileset dir="${src.dir}">
<exclude name="**/*.java"/>
<exclude name="**/*.sql"/>
<exclude name="**/*.txt"/>
</fileset>
</copy>
<delete dir="${dist.dir}"/>
<mkdir dir="${dist.dir}"/>
<jar destfile="${dist.dir}/auxiliary.jar" basedir="${temp.dir}"/> -->
</target>
После этого шага в $ {temp.dir} нет файла класса и нет сообщения об ошибке. Я дважды проверил это и обнаружил, что это из-за «проблемной строки». Я попытался добавить некоторые файлы в classpath. Я не знаю, почему это неправильно.
Комментарии:
1. вы пытались определить путь src в теге javac?
2. Можете ли вы опубликовать выходные данные ant? Кроме того, можете ли вы опубликовать полный build.xml ? Это поможет устранить проблему. Приветствия.
3. запустите его с помощью ant -v, чтобы получить больше отладочной информации. Возможно, temp.dir или src.dir не определены или не содержат значения, которое, по вашему мнению, они имеют.
Ответ №1:
Путь к источнику должен указывать на корень дерева пакетов. Вы заставляете его указывать на определенный пакет внутри исходных текстов : ../auxiliary-src/com/nextbio/drugbank
.
И в задаче javac вы просите его скомпилировать все файлы, соответствующие шаблону com/car/**
. Это означает, что он скомпилирует исходные файлы Java в ../auxiliary-src/com/nextbio/drugbank/com/car
или в подкаталоге. Если это так, у вас очень нетрадиционные имена пакетов.
Ответ №2:
У меня была та же проблема.
Мой проект был завершен хорошо, но классов там нигде не было, и у него не было никакого сообщения об ошибке.
Моей проблемой был путь к классу. Мастер eclipse добавил jar-файлы EclipseLink 2.5.1. Я удалил его, и проблема исчезла.
Я предлагаю создать простой HelloWord и удалить все ссылки на jar из classpath и повторить попытку.
Ответ №3:
Я столкнулся с проблемой «ant, javac, compile», связанной с путем к классу.
Не отображается отладочное или подробное сообщение.
Такое поведение возникает из-за того, что в classpath существуют пакеты jar несовместимой (улучшенной)версии, которые не вызывают выходных классов.