technomancy / swank-clojure

Swank/slime support for clojure
Eclipse Public License 1.0
412 stars 83 forks source link

will not start with multiple or non-existent :java-source-path #100

Open kurtharriger opened 12 years ago

kurtharriger commented 12 years ago

I was trying to use multiple java source paths as described here: https://github.com/technomancy/leiningen/issues/155 and discovered that swank no longer works, here is the stack trace. Also discovered a different error occurs if the java-source-path does not exist. I didn't save the stack trace for that one as it was more obvious to me then what the issue was this one had me guessing for a little while.

Exception in thread "main" java.lang.RuntimeException: java.lang.IllegalArgumentException: No implementation of method: :as-file of protocol: #'clojure.java.io/Coercions found for class: java.lang.Character (NO_SOURCE_FILE:0) at clojure.lang.Compiler.eval(Compiler.java:5440) at clojure.lang.Compiler.eval(Compiler.java:5391) at clojure.core$eval.invoke(core.clj:2382) at clojure.main$eval_opt.invoke(main.clj:235) at clojure.main$initialize.invoke(main.clj:254) at clojure.main$script_opt.invoke(main.clj:270) at clojure.main$main.doInvoke(main.clj:354) at clojure.lang.RestFn.invoke(RestFn.java:457) at clojure.lang.Var.invoke(Var.java:377) at clojure.lang.AFn.applyToHelper(AFn.java:172) at clojure.lang.Var.applyTo(Var.java:482) at clojure.main.main(main.java:37) Caused by: java.lang.RuntimeException: java.lang.IllegalArgumentException: No implementation of method: :as-file of protocol: #'clojure.java.io/Coercions found for class: java.lang.Character at clojure.lang.LazySeq.sval(LazySeq.java:47) at clojure.lang.LazySeq.seq(LazySeq.java:56) at clojure.lang.RT.seq(RT.java:450) at clojure.core$seq.invoke(core.clj:122) at leiningen.javac$javac.doInvoke(javac.clj:44) at clojure.lang.RestFn.invoke(RestFn.java:410) at leiningen.compile$compile.invoke(compile.clj:265) at leiningen.compile$prep$fn1947.invoke(compile.clj:141) at leiningen.compile$prep.invoke(compile.clj:140) at leiningen.compile$eval_in_project.doInvoke(compile.clj:194) at clojure.lang.RestFn.invoke(RestFn.java:425) at leiningen.swank$swank.doInvoke(swank.clj:26) at clojure.lang.RestFn.invoke(RestFn.java:445) at leiningen.swank$swank.invoke(swank.clj:27) at leiningen.swank$swank.invoke(swank.clj:28) at clojure.lang.Var.invoke(Var.java:365) at clojure.lang.AFn.applyToHelper(AFn.java:161) at clojure.lang.Var.applyTo(Var.java:482) at clojure.core$apply.invoke(core.clj:542) at leiningen.core$apply_task.invoke(core.clj:259) at leiningen.core$_main.doInvoke(core.clj:325) at clojure.lang.RestFn.invoke(RestFn.java:410) at clojure.lang.AFn.applyToHelper(AFn.java:161) at clojure.lang.RestFn.applyTo(RestFn.java:132) at clojure.core$apply.invoke(core.clj:542) at leiningen.core$_main.invoke(core.clj:328) at user$eval42.invoke(NO_SOURCE_FILE:1) at clojure.lang.Compiler.eval(Compiler.java:5424) ... 11 more Caused by: java.lang.IllegalArgumentException: No implementation of method: :as-file of protocol: #'clojure.java.io/Coercions found for class: java.lang.Character at clojure.core$_cache_protocol_fn.invoke(core_deftype.clj:471) at clojure.java.io$fn7336$G7331__7341.invoke(io.clj:34) at clojure.java.io$file.invoke(io.clj:401) at leiningen.util.paths$normalize_path.invoke(paths.clj:6) at leiningen.javac$extract_javac_task.invoke(javac.clj:22) at leiningen.javac$extract_javac_tasks$iter37343738$fn3739$fn3740.invoke(javac.clj:31) at leiningen.javac$extract_javac_tasks$iter37343738$fn3739.invoke(javac.clj:30) at clojure.lang.LazySeq.sval(LazySeq.java:42) ... 38 more

technomancy commented 12 years ago

Is this a problem with swank or Leiningen?

kurtharriger commented 12 years ago

Project builds fine, error occurs arger typing lein swank. I was creating a lein-thrift plugin and didn't want to clutter the users src/java directory if they were using it so they could clean and regenerate, so instead I made the plugin a bit smarter and it called javac after code generation with a modified project which works well enough for me. Thanks!