4

Not certain why when I lein with-profile +live ring uberjar and then java -jar my uberjar, I get this exception: 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"]]}})

Any ideas?

1 Answer 1

9

Leiningen produces two .jar files when you run lein uberjar. The one whose filename ends in ...-standalone.jar is the actual uberjar, which contains Clojure (core). The standalone file can be run simply with java -jar my_uberjar.jar. If you run the other (non-uber jar), then Clojure needs to be available in the classpath.

You can view which dependencies are included with each jar file with jar tf my_uberjar.jar. The uberjar should contain clojure/core/..., clojure/lang/..., etc.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.