Skip to content

Instantly share code, notes, and snippets.

@jalehman
Created April 11, 2014 19:24
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jalehman/10494205 to your computer and use it in GitHub Desktop.
Save jalehman/10494205 to your computer and use it in GitHub Desktop.
Uberjar error
(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)
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
@chadhq
Copy link

chadhq commented Jun 8, 2014

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))

@chrismurrph
Copy link

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