У Лейнингена есть проблемы со сборкой рабочего уберьяра - PullRequest
10 голосов
/ 25 октября 2011

Мы пытаемся построить наш проект Clojure с Leiningen.Нам удалось создать uberjar, выполнив следующие действия:

предварительные условия:

  • В файле project.clj перечислены зависимости
  • :main my-project.core в project.clj
  • файл core.clj с функцией -main
  • (:gen-class :main true) в core.clj

процедура:

  • runlein test;выполнено без сбоев
  • run lein deps;успешно завершено
  • из каталога project.clj: rain lein uberjar
  • Это создало два файла jar: My-Project-1.0.0-SNAPSHOT-standalone.jar и My-Project-1.0.0-SNAPSHOT.jar.
  • run java -jar BioClojure-1.0.0-SNAPSHOT-standalone.jar, что привело к этому исключению:

Исключение в потоке "main" java.lang.SecurityException: недопустимая подписьдайджест файла для основных атрибутов манифеста

Мое исследование этой проблемы не было плодотворным. Видимо , это известная проблема без хорошего решения.Я не понимаю ответы там.

Что нам нужно сделать, чтобы наш uberjar заработал?

  • определить, какая из наших зависимостей вызывает проблему?
  • удалитьзависимости от нашего проекта?
  • скомпилировать проект другим способом?
  • patch leiningen?
  • использовать предложенную команду: zip *-standalone.jar -d META-INF/DUMMY.SF (я понятия не имею, что это делает)
  • сделать что-то с :uberjar-exclusions в файле project.clj?(если да, то что?)

Версии Lein и java:

$ lein version
Leiningen 1.6.1 on Java 1.6.0_26 Java HotSpot(TM) 64-Bit Server VM

Обновление: запуск предложенной команды дает:

$ unzip -l BioClojure-1.0.0-SNAPSHOT-standalone.jar | grep -i -e "\.sf"
 49911  08-27-09 15:57   META-INF/RCSB-PDB.SF
     0  03-23-10 08:21   META-INF/maven/net.sf.alxa/
     0  03-23-10 08:21   META-INF/maven/net.sf.alxa/jlatexmath/
   929  03-23-10 08:20   META-INF/maven/net.sf.alxa/jlatexmath/pom.xml
   115  03-21-10 14:01   META-INF/maven/net.sf.alxa/jlatexmath/pom.properties
175241  08-17-11 20:25   META-INF/SELFSIGN.SF
     0  09-21-09 06:45   META-INF/maven/net.sf.opencsv/
     0  09-21-09 06:45   META-INF/maven/net.sf.opencsv/opencsv/
  5510  09-21-09 06:44   META-INF/maven/net.sf.opencsv/opencsv/pom.xml
   106  09-21-09 06:45   META-INF/maven/net.sf.opencsv/opencsv/pom.properties

1 Ответ

8 голосов
/ 25 октября 2011

Насколько я понимаю после прочтения комментариев к этой проблеме, ваша проблема исчезнет, ​​если вы добавите следующее в project.clj

:uberjar-exclusions [#"foo.sf"] 

, где foo.sf - это конкретный файл .sf, который вы хотитеигнорировать из банки.Вы можете определить это, выполнив:

unzip -l BioClojure-1.0.0-SNAPSHOT-standalone.jar | grep -i -e "\.sf"

Предлагаемая команда zip удаляет конкретный файл из фляги (который имеет формат ZIP).

...