Javac - это компилятор; заставить его перемещать файлы - значит использовать не тот инструмент для работы.
Я бы предложил просто использовать задачу Ant copy непосредственно перед или после задачи <javac>
для перемещения существующих файлов классов. Что-то вроде:
<copy todir="${temp}">
<fileset dir="${src}">
<include name="**/*.class" />
</fileset>
</copy>
РЕДАКТИРОВАТЬ для Eclipse: то, что вы действительно пытаетесь сделать здесь, это не Eclipse, копирующий файлы, а чтобы он распознал, что есть классы, на которые он должен ссылаться. Итак, самый простой подход, который я бы попробовал первым, - пометить каталог src
как местоположение, содержащее классы , а также , содержащий источники.
Я не знаю, сработает ли это в Eclipse - например, IDEA не позволяет папке действовать как двойная цель. И опять же, похоже, что это не совсем подходящий инструмент для работы, поскольку сборка IDE просто сопоставляет двоичные файлы, необходимые для запуска приложения, а копирование файлов на основе некоторых настроек проекта кажется неправильным как-то.
В конечном счете, я не думаю, что ваш дизайн самый чистый, поэтому смешивание классов с исходными файлами может привести к путанице. Я ценю, что вы делаете это, потому что вы хотите использовать относительные ссылки, но, возможно, вам следует абстрагировать это от самой файловой системы и использовать Classloader.findResource () (или, возможно, getResourceAsStream()
). Таким образом, вы можете расположить файлы так, как захотите, и до тех пор, пока вы запустите свое приложение с обоими каталогами на пути к классам, Java сможет найти нужный вам ресурс. Это даст вам больше гибкости в целом, а также разрешит эту конкретную ситуацию.