When I starting Clojure, I generally point -Djava.ext.dirs at a "classpaths" directory. That's where I dump jars, symlinks to jars, and symlinks to the 'src' and 'classes' directories of the various projects I have installed.
I know that some people have had trouble with java.ext.dirs and instead use wildcards in their classpaths or other more complicated solutions. But since I've never seen these problems described in enough detail to reproduce or troubleshoot, when I stumbled on one tonight I thought it'd be worth documenting... Here is the simplest way I've found to produce the error I'm seeing: 1. Compile clojure-contrib 2. Create a "classpaths" directory with symlink to clojure-contrib/classes, so as to add the compiled contrib classes to the classpath. Mine lookes like this: $ ls -l classpaths/ total 0 lrwxrwxrwx 1 chouser chouser 32 2009-06-27 00:54 classes -> ../proj/clojure-contrib/classes/ 3. Start clojure and try to use something from contrib: java -Djava.ext.dirs=classpaths -cp proj/clojure/clojure.jar clojure.main user=> (require 'clojure.contrib.math) java.lang.NoClassDefFoundError: clojure/lang/RT (NO_SOURCE_FILE:0) The full stack trace for that exception is attached. I've found two workarounds so far. Take your pick: A. Add clojure.jar to the "classpaths" directory. Once that's done, it doesn't matter if you also specify it in -cp on the java command line or not: $ ls -l classpaths/ total 0 lrwxrwxrwx 1 chouser chouser 32 2009-06-27 00:54 classes -> ../proj/clojure-contrib/classes/ lrwxrwxrwx 1 chouser chouser 27 2009-06-27 01:06 clojure.jar -> ../proj/clojure/clojure.jar B. Remove the contrib link from "classpaths" and specify it on the java command line instead: java -Djava.ext.dirs=classpaths -cp proj/clojure-contrib/classes clojure.main --Chouser --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~----------~----~----~----~------~----~------~--~---
Exception in thread "main" java.lang.NoClassDefFoundError: clojure/lang/RT (NO_SOURCE_FILE:0) at clojure.lang.Compiler.eval(Compiler.java:4617) at clojure.core$eval__4654.invoke(core.clj:1739) at clojure.main$eval_opt__6559.invoke(main.clj:223) at clojure.main$initialize__6566.invoke(main.clj:242) at clojure.main$null_opt__6588.invoke(main.clj:267) at clojure.main$main__6608.doInvoke(main.clj:336) at clojure.lang.RestFn.invoke(RestFn.java:426) at clojure.lang.Var.invoke(Var.java:350) at clojure.lang.AFn.applyToHelper(AFn.java:175) at clojure.lang.Var.applyTo(Var.java:463) at clojure.main.main(main.java:37) Caused by: java.lang.NoClassDefFoundError: clojure/lang/RT at clojure.contrib.math__init.<clinit>(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:247) at clojure.lang.RT.loadClassForName(RT.java:1521) at clojure.lang.RT.load(RT.java:389) at clojure.lang.RT.load(RT.java:371) at clojure.core$load__5749$fn__5752.invoke(core.clj:3784) at clojure.core$load__5749.doInvoke(core.clj:3783) at clojure.lang.RestFn.invoke(RestFn.java:413) at clojure.core$load_one__5701.invoke(core.clj:3620) at clojure.core$load_lib__5722.doInvoke(core.clj:3657) at clojure.lang.RestFn.applyTo(RestFn.java:147) at clojure.core$apply__3900.doInvoke(core.clj:390) at clojure.lang.RestFn.invoke(RestFn.java:443) at clojure.core$load_libs__5734.doInvoke(core.clj:3683) at clojure.lang.RestFn.applyTo(RestFn.java:142) at clojure.core$apply__3900.doInvoke(core.clj:390) at clojure.lang.RestFn.invoke(RestFn.java:443) at clojure.core$require__5740.doInvoke(core.clj:3751) at clojure.lang.RestFn.invoke(RestFn.java:413) at user$eval__1.invoke(NO_SOURCE_FILE:1) at clojure.lang.Compiler.eval(Compiler.java:4601) ... 10 more Caused by: java.lang.ClassNotFoundException: clojure.lang.RT at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at sun.misc.Launcher$ExtClassLoader.findClass(Launcher.java:229) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at java.lang.ClassLoader.loadClass(ClassLoader.java:252) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) ... 32 more