Найденный моей проблемой. Я включал свой каталог классов в мой путь с помощью fileset в противоположность pathelement, это заставляло .class файлы быть открытыми как ZipFiles, который, конечно, выдал исключение.
Это кажется, что существует проблема с путями.
Проверка после ошибочного источника:
еще Некоторая информация помогла бы помочь :)
Удачи!
Спасибо, ребята, за эту информацию. Я просто хочу добавить несколько советов из своего опыта. У меня та же проблема с junit, что и у вас, когда junit пытается открыть файлы лицензии * .txt в папке lib, где находится * .jar (процесс разрешения Ivy помещает их сюда) Так что
<path id="lib.path.id">
<fileset dir="${lib.dir}" includes="**.jar"/>
</path>
тоже помогает.
Эта ошибка вызвана тем, что путь класса содержит явные ссылки на один или несколько [файлов], которые не являются JAR'ами. Ссылка на "ошибку при открытии zip-файла", конечно, означает, что JAR - это, по сути, ZIP-файл, в то время как другие файлы [JUNIT], такие как файлы классов, не являются и как таковые не имеют формата zip. Поэтому путь к классу должен содержать только явные ссылки на [файлы] JAR и/или имена [каталогов], в которых должны быть найдены другие ресурсы, такие как файлы классов.
Поэтому при создании пути класса (в ANT) используйте:
<path id="proj.class.path">
<pathelement location="c:/my/project/root" /> :one for each of the [directories] where class files, log4j property files and other resources etc are to be found
<fileset refid="my.file.set"> :to describe all the explicit JAR [files] that need to be on the class path.
</path>
where
<fileset id="my.file.set" dir="c:/where/i/keep/my/jars">
<filename name="myjar1.jar" />
<filename name="myjar2.jar" />
<filename name="myjar3.jar" />
</fileset>
или
ПРИМЕЧАНИЕ: При использовании подстановочных карт, таких как [**/*]
, необходимо убедиться, что подстановочная карта не соответствует файлам, которые не являются JAR файлами
<fileset id="my.file.set" dir="c:/where/i/keep/my/jars">
<include name="**/*.jar" />
</fileset>