Created
April 11, 2014 19:24
-
-
Save jalehman/10494205 to your computer and use it in GitHub Desktop.
Uberjar error
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defproject fmspider "0.1.0" | |
: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.5.1"] | |
[org.clojure/tools.namespace "0.2.4"] | |
[itsy "0.1.1"] | |
[clj-http "0.9.1"] | |
[enlive "1.1.5"] | |
[com.taoensso/timbre "3.1.6"] | |
[clojurewerkz/elastisch "1.4.0"] | |
[com.stuartsierra/component "0.2.1"] | |
[jarohen/nomad "0.6.3"] | |
[im.chit/cronj "1.0.1"] | |
[org.clojure/core.async "0.1.278.0-76b25b-alpha"] | |
[compojure "1.1.6"] | |
[ring "1.2.1"] | |
[http-kit "2.1.16"] | |
[digest "1.4.4"] | |
[slingshot "0.10.3"] | |
[cheshire "5.2.0"] | |
[prismatic/schema "0.2.1"] | |
[sqlingvo "0.5.16"] | |
[com.mchange/c3p0 "0.9.5-pre6"] | |
[org.clojure/java.jdbc "0.3.3"] | |
[org.postgresql/postgresql "9.2-1002-jdbc4"]] | |
:main fmspider.core | |
:aot :all | |
:clean-non-project-classes false) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Exception in thread "main" java.lang.NoClassDefFoundError: com/stuartsierra/component/Lifecycle | |
at java.lang.ClassLoader.defineClass1(Native Method) | |
at java.lang.ClassLoader.defineClass(ClassLoader.java:800) | |
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) | |
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) | |
at java.net.URLClassLoader.access$100(URLClassLoader.java:71) | |
at java.net.URLClassLoader$1.run(URLClassLoader.java:361) | |
at java.net.URLClassLoader$1.run(URLClassLoader.java:355) | |
at java.security.AccessController.doPrivileged(Native Method) | |
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) | |
at java.lang.ClassLoader.loadClass(ClassLoader.java:425) | |
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) | |
at java.lang.ClassLoader.loadClass(ClassLoader.java:358) | |
at java.lang.Class.forName0(Native Method) | |
at java.lang.Class.forName(Class.java:190) | |
at fmspider.server$fn__17036.<clinit>(server.clj:21) | |
at fmspider.server__init.load(Unknown Source) | |
at fmspider.server__init.<clinit>(Unknown Source) | |
at java.lang.Class.forName0(Native Method) | |
at java.lang.Class.forName(Class.java:270) | |
at clojure.lang.RT.loadClassForName(RT.java:2098) | |
at clojure.lang.RT.load(RT.java:430) | |
at clojure.lang.RT.load(RT.java:411) | |
at clojure.core$load$fn__5018.invoke(core.clj:5530) | |
at clojure.core$load.doInvoke(core.clj:5529) | |
at clojure.lang.RestFn.invoke(RestFn.java:408) | |
at clojure.core$load_one.invoke(core.clj:5336) | |
at clojure.core$load_lib$fn__4967.invoke(core.clj:5375) | |
at clojure.core$load_lib.doInvoke(core.clj:5374) | |
at clojure.lang.RestFn.applyTo(RestFn.java:142) | |
at clojure.core$apply.invoke(core.clj:619) | |
at clojure.core$load_libs.doInvoke(core.clj:5413) | |
at clojure.lang.RestFn.applyTo(RestFn.java:137) | |
at clojure.core$apply.invoke(core.clj:619) | |
at clojure.core$require.doInvoke(core.clj:5496) | |
at clojure.lang.RestFn.invoke(RestFn.java:703) | |
at fmspider.core$loading__4910__auto__.invoke(core.clj:1) | |
at fmspider.core__init.load(Unknown Source) | |
at fmspider.core__init.<clinit>(Unknown Source) | |
at java.lang.Class.forName0(Native Method) | |
at java.lang.Class.forName(Class.java:270) | |
at clojure.lang.RT.loadClassForName(RT.java:2098) | |
at clojure.lang.RT.load(RT.java:430) | |
at clojure.lang.RT.load(RT.java:411) | |
at clojure.core$load$fn__5018.invoke(core.clj:5530) | |
at clojure.core$load.doInvoke(core.clj:5529) | |
at clojure.lang.RestFn.invoke(RestFn.java:408) | |
at clojure.core$load_one.invoke(core.clj:5336) | |
at clojure.core$load_lib$fn__4967.invoke(core.clj:5375) | |
at clojure.core$load_lib.doInvoke(core.clj:5374) | |
at clojure.lang.RestFn.applyTo(RestFn.java:142) | |
at clojure.core$apply.invoke(core.clj:619) | |
at clojure.core$load_libs.doInvoke(core.clj:5413) | |
at clojure.lang.RestFn.applyTo(RestFn.java:137) | |
at clojure.core$apply.invoke(core.clj:619) | |
at clojure.core$require.doInvoke(core.clj:5496) | |
at clojure.lang.RestFn.invoke(RestFn.java:457) | |
at user$eval3$loading__4910__auto____4.invoke(user.clj:1) | |
at user$eval3.invoke(user.clj:1) | |
at clojure.lang.Compiler.eval(Compiler.java:6619) | |
at clojure.lang.Compiler.eval(Compiler.java:6608) | |
at clojure.lang.Compiler.load(Compiler.java:7064) | |
at clojure.lang.RT.loadResourceScript(RT.java:370) | |
at clojure.lang.RT.loadResourceScript(RT.java:357) | |
at clojure.lang.RT.maybeLoadResourceScript(RT.java:353) | |
at clojure.lang.RT.doInit(RT.java:461) | |
at clojure.lang.RT.<clinit>(RT.java:329) | |
at clojure.main.<clinit>(main.java:20) | |
Caused by: java.lang.ClassNotFoundException: com.stuartsierra.component.Lifecycle | |
at java.net.URLClassLoader$1.run(URLClassLoader.java:366) | |
at java.net.URLClassLoader$1.run(URLClassLoader.java:355) | |
at java.security.AccessController.doPrivileged(Native Method) | |
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) | |
at java.lang.ClassLoader.loadClass(ClassLoader.java:425) | |
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) | |
at java.lang.ClassLoader.loadClass(ClassLoader.java:358) | |
... 67 more |
I was having the same problem. What fixed it for me was making sure the :uberjar
map had these two map-entries:
{
:main my.server-main
:aot [my.server-main com.stuartsierra.component com.stuartsierra.dependency]
}
Previously :aot :all
was there, but inspection of the created jar file made me realize it wasn't working: there were barely any .class
files there, certainly not com/stuartsierra/component/Lifecycle
.
(I also tried the other suggestion, putting (:gen-class)
where there were components, but that didn't help)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hey Josh,
I was having the same problem. I noticed adding (:gen-class) to the ns of all my components fixed the problem. Cant explain why though I'm affraid.
(ns components.web-server
(:require [com.stuartsierra.component :as component]
[aleph.http :refer [start-http-server wrap-ring-handler]]
[taoensso.timbre :as timbre :refer [info]]
[app.handler :refer [app]])
(:gen-class))