Что вызывает дублирование предупреждений о записи при JAR'ировании с помощью Eclipse?

Я jar создаю свое приложение Java Swing, которое также использует joda.time, apache.commons и несколько других внешних jar.

Вывод jar выполняется, однако Eclipse сообщал о некоторых предупреждениях при создании jar через Export > Java > Runnable Jar. Я выбираю вариант «переупаковки» для работы с внешними jar. Вот начало списка примерно из 146 строк предупреждений.

  JAR export finished with warnings. See details for additional information.

  Details:
  duplicate entry: allclasses-frame.html
  duplicate entry: allclasses-frame.html
  duplicate entry: allclasses-noframe.html
  duplicate entry: allclasses-noframe.html
  duplicate entry: constant-values.html
  duplicate entry: constant-values.html
  duplicate entry: deprecated-list.html
  duplicate entry: deprecated-list.html
  duplicate entry: help-doc.html
  duplicate entry: help-doc.html
  duplicate entry: index-all.html
  duplicate entry: index-all.html
  duplicate entry: index.html
  duplicate entry: index.html
  duplicate entry: overview-frame.html
  duplicate entry: overview-frame.html
  duplicate entry: overview-summary.html
  duplicate entry: overview-summary.html
  duplicate entry: overview-tree.html
  duplicate entry: overview-tree.html
  duplicate entry: package-list
  duplicate entry: package-list
  duplicate entry: resources/inherit.gif
  duplicate entry: resources/inherit.gif

Поскольку это приложение Swing для рабочего стола, предупреждения о html и css (не показаны) весьма неожиданны. Совет?


person H2ONaCl    schedule 02.02.2012    source источник


Ответы (4)


Похоже, что файлы jar включают Javadocs. Повторяющиеся записи каким-то образом стирают это. Однако, если вам не нужны Javadocs, вам все равно. Однако попробуйте получить файлы jar без исходников или документов.

Кроме того, в Eclipse есть возможность включать банки зависимостей как банки (вместо того, чтобы собирать все их содержимое вместе). Вы тоже можете это попробовать.

person Thilo    schedule 02.02.2012
comment
Упаковка банок зависимостей в банку (вместо упаковки классов в банку) решила проблему для меня. - person H2ONaCl; 25.01.2013

У меня был основной метод в XXX.java, и я переместил его в YYY.java, поэтому моя конфигурация запуска по-прежнему была настроена на использование XXX в качестве основной точки входа. В конце всех duplicate entry: blahblahblah сообщений было одно, в котором говорилось что-то вроде unable to locate main class. Поэтому я просто изменил конфигурацию запуска, и все ошибки исчезли.

person nullromo    schedule 12.07.2016

Я решил эту проблему, щелкнув «Упаковать необходимые библиотеки в сгенерированный JAR» в спецификации исполняемого JAR диалогового окна «Экспорт исполняемого файла JAR» вместо стандартного «Извлечь необходимые библиотеки в сгенерированный JAR».

Eclipse IDE для разработчиков Java Версия: Luna Service Release 2 (4.4.2) Идентификатор сборки: 20150219-0600

person Charles Mosndup    schedule 15.05.2017
comment
Да, кажется, что решение jar in jar избавляет от предупреждения. Жаль, что диалоги Eclipse немного загадочны. Альтернативой, вероятно, является класс в jar, который предоставляет идентификаторы, вызывающие предупреждения. - person H2ONaCl; 19.05.2017

Это неправда.

Дело в том, что вы экспортируете в файл jar, извлекая классы из библиотек, на которые ссылаются (библиотека Jar, которую вы используете).

И когда eclipse извлекает все, что содержится в файлах jar, перезаписывает разные объекты с тем же именем и путем.

У меня та же проблема, и я ищу решение, потому что вы можете «упаковать» банки в банку, но это более медленное решение.

Удача

person kike    schedule 04.12.2012