lein ring uberjar -- java.lang.NoClassDefFoundError: clojure/lang/Var 使用lein ring uberjar命令时出现java.lang.NoClassDefFoundError: clojure/lang/Var错误。

4

我不确定为什么当我执行 lein with-profile +live ring uberjarjava -jar 我的uberjar时,会出现这个异常:java.lang.NoClassDefFoundError: clojure/lang/Var

project.clj:

(defproject gn-preview-api "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"]]
  :main gn-preview-api.www.app
  :target-path "target/%s"
  :profiles {:uberjar {:aot :all}
             :staging {:aot :all}
             :live    {:aot :all}
             :dev     {:plugins      [[lein-ring "0.9.7"]]
                       :dependencies [[javax.servlet/servlet-api "2.5"]]}})

有什么想法吗?
1个回答

9
Leiningen 运行lein uberjar会生成两个.jar文件。文件名以...-standalone.jar结尾的是实际的uberjar,其中包含Clojure(核心)。可以使用java -jar my_uberjar.jar简单地运行独立文件。如果运行另一个(非uber jar),则需要在类路径中可用Clojure。
您可以使用jar tf my_uberjar.jar查看每个jar文件包含哪些依赖项。 uberjar应包含clojure/core/...clojure/lang/...等。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接