Из справочной страницы Ant Copy:
"Важное примечание о кодировке. Причиной того, что двоичные файлы при фильтрации повреждаются, является то, что фильтрация включает в себя чтение в файле с использованием класса Reader. Это имеет кодировку, определяющую, как файлы кодируются. Существует несколько различных типов кодирования: UTF-8, UTF-16, Cp1252, ISO-8859-1, US-ASCII и (много) др. В Windows кодировкой символов по умолчанию является Cp1252, в Unix это обычно UTF-8. Для обеих этих кодировок есть недопустимые последовательности байтов (больше в UTF-8, чем для Cp1252).
Как класс Reader работает с этими недопустимыми последовательностями, зависит от реализации декодера символов. Текущая реализация Sun Java предназначена для отображения их на допустимые символы. Предыдущая версия Sun Java (1.3 и ниже) вызвала исключение MalformedInputException. IBM Java 1.4 также выдает это исключение. Именно отображение символов вызывает искажение.
В Unix, где по умолчанию обычно используется кодировка UTF-8, это большая проблема, так как легко отредактировать файл, содержащий символы, отличные от US Ascii из ISO-8859-1, например, датский символ oe. Когда это копируется (с фильтрацией) Ant, персонаж конвертируется в знак вопроса (или что-то подобное).
Муравей мало что может сделать. Он не может определить, какие файлы являются двоичными - в корейской версии UTF-8 будет много байтов с установленным старшим битом. Текущие реализации Sun Java не сообщают о недопустимых последовательностях символов. "
Похоже, что задача копирования файлов NetBeans была создана, чтобы избежать этой неустранимой ошибки при копировании файлов Jar. Не так абсурдно, как кажется.