您应该更改您的 java 调用以使用 -jar 选项,如下所示:
~/expr/rundir > java -jar ./calc-0.1.0-SNAPSHOT-standalone.jar
main - enter
(ac/add2 3 5) => 8
main - leave
对于看起来像这样的代码:
calc
├── project.clj
├── resources
│ └── adder.jar
└── src
├── calc
│ └── core.clj
~/expr/calc > cat src/calc/core.clj
(ns calc.core
"Contains the core functions for namespace `calc.core`."
(:require [adder.core :as ac] )
(:gen-class))
(defn -main []
(println "main - enter")
(println (ac/add2 3 5))
(println "main - leave"))
文件adder.jar 是使用来自另一个具有单一功能的项目的lein jar 创建的:
(ns adder.core)
(defn add2 [x y]
(+ x y))
生成的文件重命名为“adder.jar”并放入calc 项目的resources 目录中。看着project.clj:
(defproject calc "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [
[org.clojure/clojure "1.9.0"]
[org.clojure/test.check "0.9.0"]
[prismatic/schema "1.1.7"]
[tupelo "0.9.71"]
]
:profiles {:dev {:dependencies []
:plugins [
[com.jakemccrary/lein-test-refresh "0.22.0"] ] }
:uberjar {:aot :all}}
:global-vars {*warn-on-reflection* false}
:main ^:skip-aot calc.core
:source-paths ["src"]
:test-paths ["src"]
:resource-paths ["resources/adder.jar"]
:target-path "target/%s"
:jvm-opts ["-Xms500m" "-Xmx2g"]
)
诀窍在于:resource-paths,如下所示:
:resource-paths [ "resources/adder.jar" ]
您需要在向量中单独列出每个*.jar 文件作为字符串。请注意,以下将不起作用:
:resource-paths [ "resources" ] ; does not find *.jar files
:resource-paths [ "resources/*.jar" ] ; wildcards do not work
:resource-paths [ resources/adder.jar ] ; without quotes fails
然后我们可以为 calc 项目创建一个 uberjar,其中将包含来自 adder.jar 的内容:
~/expr/calc > lein uberjar
Compiling _bootstrap
Compiling calc.core
Compiling tst.calc.core
Created /home/alan/expr/calc/target/uberjar/calc-0.1.0-SNAPSHOT.jar
Created /home/alan/expr/calc/target/uberjar/calc-0.1.0-SNAPSHOT-standalone.jar
您想为您的 uberjar 使用 *-standalone.jar 版本。我们将其复制到一个空目录以验证它是否有效:
~/expr/calc > mkdir -p ../rundir
~/expr/calc > cp target/uberjar/calc-0.1.0-SNAPSHOT-standalone.jar ../rundir
~/expr/calc > cd ../rundir
~/expr/rundir > ls -al
total 11744
drwxrwxr-x 2 alan alan 4096 Jan 14 19:22 .
drwxrwxr-x 5 alan alan 4096 Jan 14 19:22 ..
-rw-rw-r-- 1 alan alan 12016027 Jan 14 19:30 calc-0.1.0-SNAPSHOT-standalone.jar
~/expr/rundir > java -jar calc-0.1.0-SNAPSHOT-standalone.jar
main - enter
(ac/add2 3 5) => 8
main - leave