Каждый класс имеет два файла классов в файле JAR - PullRequest
2 голосов
/ 19 августа 2011

У меня есть jar-файл, который содержит два файла классов на каждый java-файл.

Java:

Foo.java
Bar.java

Classfile:

Foo.class
Foo.class
Bar.class
Bar.class

Я подтвердил, что тамтолько один Java-файлы на класс.Java-файлы не содержат внутренних классов.Я использую задачу jar ant для создания файла jar.Прежде чем выполнить задачу, в каталоге компоновки есть только один файл класса на класс.

Я вижу файлы двойного класса с jar -tf jarfile.jar или когда я просматриваю его в программе zip.Когда я распаковываю файлы, программа zip спрашивает, следует ли перезаписать существующий файл.

Как это может произойти?

Ответы [ 2 ]

4 голосов
/ 19 августа 2011

Используете ли вы задачу Ant Jar?Если это так, то вы можете определенно получить дубликаты файлов в одном файле JAR.Атрибут duplicate используется, чтобы остановить это.

Обратите внимание, что формат zip позволяет нескольким файлам с одинаковым полным именем существовать в одном архиве.Было задокументировано, что это вызывает различные проблемы для ничего не подозревающих пользователей.Если вы хотите избежать такого поведения, вы должны установить для атрибута дубликата значение, отличное от значения по умолчанию, «add».

со страницы руководства Ant: http://ant.apache.org/manual/Tasks/jar.html

1 голос
/ 22 августа 2011

Я думаю, что нашел проблему. Это задача фляги:

    <jar basedir="${build.class.dir}" jarfile="${dist.dir}/${subproject}.jar">
        <fileset dir="${build.class.dir}" />
    </jar>

Как я читаю на веб-сайте Ant

Эта задача формирует неявный FileSet и поддерживает большинство атрибутов (dir становится> basedir), а также вложенных элементов и.

Так что может показаться, что тег или basedir не нужны. По крайней мере, это работает. Хорошо, если я закомментирую тег fileset.

Спасибо за вашу помощь и указатели!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...