Hi all, Since I started using Clojure (I think from just before 1.0) I have, on the odd occasion, received an error message of this form (Unknown constant tag X in class file error) while trying to evaluate a namespace in Slime/Emacs.
Whenever it cropped up, it was completely random: it never seemed to have any specific relation to something I'd done in the code. Sometimes it'd get triggered by an arbitrary change like renaming a variable or deleting a comment or unused function. In all cases, recompiling the project from scratch would get past the issue. I'd always figured it was some random quirk of the compiler. Since it didn't happen often and could be fixed by a recompile, I just let it be. Today though, I've started running into this error more persistently. It'll start appearing consistently -right- after a recompile. I.e.: I'll compile the project, then try re-evaluate a namespace that was just compiled (no changes to the code) and it'll throw the error. There hasn't been any change to the code in this file and the other recent changes are all superficial and syntactically correct (proved also by the fact that the source is compiling successfully). I'm using Clojure 1.2.0. The best info I could find on this error is here, from 2009: http://www.mail-archive.com/clojure@googlegroups.com/msg19130.html. I don't have any familiarity with Clojure's compiler (or Java or the JVM) so am a little clueless as to where I'd begin trying to get past the problem. Any rough idea what might be going on? Am I possibly bumping into a Clojure/Java/JVM limitation somewhere? Could this be a Slime/Swank issue? The project's about 21,000 LOC right now, including lots of comments. This is split into about 40 namespaces/files. Kind of in the middle of a product launch right now, so the timing's a little bit unfortunate: would really appreciate any advice! Thank you! The full stack trace is below: Unknown constant tag 32 in class file wusoup/web/responses/profiles $eval7347 [Thrown class java.lang.ClassFormatError] Restarts: 0: [QUIT] Quit to the SLIME top level Backtrace: 0: java.lang.ClassLoader.defineClass1(Native Method) 1: java.lang.ClassLoader.defineClass(ClassLoader.java:634) 2: java.lang.ClassLoader.defineClass(ClassLoader.java:480) 3: clojure.lang.DynamicClassLoader.defineClass(DynamicClassLoader.java: 45) 4: clojure.lang.Compiler$ObjExpr.getCompiledClass(Compiler.java: 3964) 5: clojure.lang.Compiler$FnExpr.parse(Compiler.java:3219) 6: clojure.lang.Compiler.analyzeSeq(Compiler.java:5367) 7: clojure.lang.Compiler.analyze(Compiler.java:5190) 8: clojure.lang.Compiler.eval(Compiler.java:5421) 9: clojure.lang.Compiler.eval(Compiler.java:5391) 10: clojure.core$eval.invoke(core.clj:2382) 11: swank.core$eval_in_emacs_package.invoke(core.clj:94) 12: swank.core$eval_for_emacs.invoke(core.clj:241) 13: clojure.lang.Var.invoke(Var.java:373) 14: clojure.lang.AFn.applyToHelper(AFn.java:169) 15: clojure.lang.Var.applyTo(Var.java:482) 16: clojure.core$apply.invoke(core.clj:540) 17: swank.core$eval_from_control.invoke(core.clj:101) 18: swank.core$spawn_worker_thread$fn__465$fn__466.invoke(core.clj: 300) 19: clojure.lang.AFn.applyToHelper(AFn.java:159) 20: clojure.lang.AFn.applyTo(AFn.java:151) 21: clojure.core$apply.invoke(core.clj:540) 22: swank.core$spawn_worker_thread$fn__465.doInvoke(core.clj:296) 23: clojure.lang.RestFn.invoke(RestFn.java:398) 24: clojure.lang.AFn.run(AFn.java:24) 25: java.lang.Thread.run(Thread.java:636) -- 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