hi all -- i am running a clojure based library (cascalog) on top of hadoop. i started getting errors on loading a class with the follow stack trace:
Caused by: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.ClassNotFoundException: views.visit-facts, compiling:(views/ visit_facts.clj:1) at cascalog.Util.tryRequire(Util.java:61) at cascalog.Util.bootSimpleFn(Util.java:65) at cascalog.Util.bootFn(Util.java:72) at cascalog.ClojureCascadingBase.prepare(ClojureCascadingBase.java: 52) ... Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: views.visit-facts, compiling:(views/ visit_facts.clj:1) at clojure.lang.Compiler.analyze(Compiler.java:6235) at clojure.lang.Compiler.analyze(Compiler.java:6177) at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3503) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6411) at clojure.lang.Compiler.analyze(Compiler.java:6216) at clojure.lang.Compiler.analyze(Compiler.java:6177) at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5572) at clojure.lang.Compiler$TryExpr$Parser.parse(Compiler.java:2091) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6409) at clojure.lang.Compiler.analyze(Compiler.java:6216) at clojure.lang.Compiler.analyze(Compiler.java:6177) at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5572) at clojure.lang.Compiler$FnMethod.parse(Compiler.java:5008) at clojure.lang.Compiler$FnExpr.parse(Compiler.java:3629) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6407) at clojure.lang.Compiler.analyze(Compiler.java:6216) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6397) at clojure.lang.Compiler.analyze(Compiler.java:6216) at clojure.lang.Compiler.analyze(Compiler.java:6177) at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3452) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6411) at clojure.lang.Compiler.analyze(Compiler.java:6216) at clojure.lang.Compiler.analyze(Compiler.java:6177) at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5572) at clojure.lang.Compiler$FnMethod.parse(Compiler.java:5008) at clojure.lang.Compiler$FnExpr.parse(Compiler.java:3629) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6407) at clojure.lang.Compiler.analyze(Compiler.java:6216) at clojure.lang.Compiler.eval(Compiler.java:6462) at clojure.lang.Compiler.eval(Compiler.java:6455) at clojure.lang.Compiler.load(Compiler.java:6902) at clojure.lang.RT.loadResourceScript(RT.java:357) at clojure.lang.RT.loadResourceScript(RT.java:348) at clojure.lang.RT.load(RT.java:427) at clojure.lang.RT.load(RT.java:398) at clojure.core$load$fn__4791.invoke(core.clj:5386) at clojure.core$load.doInvoke(core.clj:5385) at clojure.lang.RestFn.invoke(RestFn.java:408) at clojure.core$load_one.invoke(core.clj:5200) at clojure.core$load_lib.doInvoke(core.clj:5237) at clojure.lang.RestFn.applyTo(RestFn.java:142) at clojure.core$apply.invoke(core.clj:602) at clojure.core$load_libs.doInvoke(core.clj:5271) at clojure.lang.RestFn.applyTo(RestFn.java:137) at clojure.core$apply.invoke(core.clj:602) at clojure.core$require.doInvoke(core.clj:5352) at clojure.lang.RestFn.invoke(RestFn.java:408) at clojure.lang.Var.invoke(Var.java:401) at cascalog.Util.tryRequire(Util.java:51) ... 50 more Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: views.visit-facts at clojure.lang.Util.runtimeException(Util.java:165) at clojure.lang.RT.classForName(RT.java:2017) at clojure.lang.Compiler.resolveIn(Compiler.java:6701) at clojure.lang.Compiler.resolve(Compiler.java:6664) at clojure.lang.Compiler.analyzeSymbol(Compiler.java:6625) at clojure.lang.Compiler.analyze(Compiler.java:6198) ... 98 more Caused by: java.lang.ClassNotFoundException: views.visit-facts at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at clojure.lang.DynamicClassLoader.findClass(DynamicClassLoader.java: 61) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:247) at clojure.lang.RT.classForName(RT.java:2013) the ns statement of this class looks like (ns views.visit-facts (:use {some classes}) (:require {some classes}]) (:gen-class)) this class is AOT compiled into an uberjar, everything is turned into underscores jar -tvf my-jar-standalone.jar | grep visit_facts ... 1791 Thu May 03 16:01:40 EDT 2012 views/visit_facts.class 15270 Thu May 03 16:01:40 EDT 2012 views/visit_facts__init.class 9594 Sun Apr 29 18:36:56 EDT 2012 views/visit_facts.clj a lot of other classes i have in this jar also use hyphens in the ns and there are no issues whatsoever, but it just seems like this one sees this issue where its trying to lookup the classname by the hyphens instead of underscore? i am a clojure n00b and i am not really sure how that all works. here is the code for tryRequire (the method at the top of the stack trace) public static void tryRequire(String ns_name) { try { require.invoke(symbol.invoke(ns_name)); } catch (Exception e) { //if playing from the repl and defining functions, file won't exist Throwable rootCause = getRootCause(e); boolean fileNotFound = (rootCause instanceof FileNotFoundException); boolean nsFileMissing = e.getMessage().contains(ns_name + ".clj on classpath"); if (!(fileNotFound && nsFileMissing)) throw new RuntimeException(e); } } any insight would be really appreciated -- at what point does clojure do the hyphen to underscore conversion and what sort of circumstances might break that? -- 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