10

Leiningenを使用してClojureプロジェクトを構築しようとしています。次のようにして、uberjarを作成することに成功しました。

前提条件:

  • project.cljファイルは依存関係をリストします
  • :main my-project.coreproject.cljで
  • -main関数を含むcore.cljファイル
  • (:gen-class :main true)core.cljで

手順:

  • 走ったlein test; 失敗せずに完了
  • 走ったlein deps; 正常に完了しました
  • project.cljのディレクトリから:rainlein uberjar
  • これにより、My-Project-1.0.0-SNAPSHOT-standalone.jarとMy-Project-1.0.0-SNAPSHOT.jarの2つのjarファイルが作成されました。
  • を実行しjava -jar BioClojure-1.0.0-SNAPSHOT-standalone.jarたため、次の例外が発生しました。

スレッド"main"の例外java.lang.SecurityException:マニフェストのメイン属性の署名ファイルダイジェストが無効です

この問題に関する私の研究は実を結びませんでした。 どうやら、それは良い解決策のない既知の問題です。そこの答えがわかりません。

uberjarを機能させるには何をする必要がありますか?

  • 問題の原因となっている依存関係を特定しますか?
  • プロジェクトから依存関係を削除しますか?
  • プロジェクトを他の方法でコンパイルしますか?
  • パッチライニンゲン?
  • 提案されたコマンドを使用します:( zip *-standalone.jar -d META-INF/DUMMY.SFこれが何をするのかわかりません)
  • :uberjar-exclusionsproject.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
4

1 に答える 1

8

その問題のコメントを読んで理解したのは、次を追加すると問題が解決するということです。project.clj

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

foo.sfjar から無視する特定の .sf ファイルはどこにありますか。これは、次を実行することで確認できます。

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

推奨さzipれるコマンドは、jar (ZIP 形式) から特定のファイルを削除します。

于 2011-10-25T19:44:34.143 に答える