Build Leiningen在构建工作uberjar时遇到问题

Build Leiningen在构建工作uberjar时遇到问题,build,clojure,jar,leiningen,Build,Clojure,Jar,Leiningen,我们正试图与Leiningen一起构建Clojure项目。我们通过执行以下操作成功创建了uberjar: 先决条件: project.clj文件列出了依赖项 :project.clj中的main my project.core 具有-main功能的core.clj文件 (:gen class:main true)在core.clj中 程序: 运行lein测试;无故障完成 运行lein deps;成功完成 来自project.clj的目录:rainleinuberjar 这创建了两个jar文

我们正试图与Leiningen一起构建Clojure项目。我们通过执行以下操作成功创建了uberjar:

先决条件:

  • project.clj文件列出了依赖项
  • :project.clj中的main my project.core
  • 具有
    -main
    功能的core.clj文件
  • (:gen class:main true)
    在core.clj中
程序:

  • 运行
    lein测试
    ;无故障完成
  • 运行
    lein deps
    ;成功完成
  • 来自project.clj的目录:rain
    leinuberjar
  • 这创建了两个jar文件:My-Project-1.0.0-SNAPSHOT-standalone.jar和My-Project-1.0.0-SNAPSHOT.jar
  • 运行java-jar BioClojure-1.0.0-SNAPSHOT-standalone.jar,导致此异常:
线程“main”java.lang.SecurityException中出现异常:清单主属性的签名文件摘要无效

我对这个问题的研究没有取得成果,这是一个已知的问题,没有好的解决办法。我不明白那里的答案

我们需要做什么才能让uberjar正常工作?

  • 确定是哪个依赖项导致了问题
  • 从我们的项目中删除依赖项
  • 以其他方式编译项目
  • 帕奇·莱宁根
  • 使用建议的命令:
    zip*-standalone.jar-d META-INF/DUMMY.SF
    (我不知道这是做什么的)
  • 是否对project.clj文件中的
    :uberjar排除项进行处理?(如果是,什么?)

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

我从阅读该期评论中了解到,如果您将以下内容添加到您的
项目中,您的问题就会消失。clj

:uberjar-exclusions [#"foo.sf"] 
其中
foo.sf
是要从jar中忽略的特定.sf文件。您可以通过运行以下命令来确定这一点:

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

建议使用
zip
命令从jar中删除特定文件(zip格式)。

@MattFenwick我相信您只想排除
RCSB-PDB.SF
SELFSIGN.SF