Hello clojurians,
Adding an URL to the classpath dynamically in REPL succeeded.
$ java -cp clojure-1.3.0.jar clojure.main
Clojure 1.3.0
user=> (def ccl (.getContextClassLoader (Thread/currentThread)))
#'user/ccl
user=> (class ccl)
clojure.lang.DynamicClassLoader
user=> (.addURL ccl (java.net.URL. "file:///some/path/"))
nil
But the program below fails.
$ cat addcp.clj
(def ccl (.getContextClassLoader (Thread/currentThread)))
(println (class ccl))
(.addURL ccl (java.net.URL. "file:///some/path/"))
$ java -cp clojure-1.3.0.jar clojure.main addcp.clj
sun.misc.Launcher$AppClassLoader
Exception in thread "main" java.lang.IllegalArgumentException: No matching method found: addURL for class sun.misc.Launcher$AppClassLoader
at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:52)
at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:30)
at user$eval3.invoke(addcp.clj:3)
at clojure.lang.Compiler.eval(Compiler.java:6465)
at clojure.lang.Compiler.load(Compiler.java:6902)
at clojure.lang.Compiler.loadFile(Compiler.java:6863)
at clojure.main$load_script.invoke(main.clj:282)
at clojure.main$script_opt.invoke(main.clj:342)
at clojure.main$main.doInvoke(main.clj:426)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.lang.Var.invoke(Var.java:401)
at clojure.lang.AFn.applyToHelper(AFn.java:161)
at clojure.lang.Var.applyTo(Var.java:518)
at clojure.main.main(main.java:37)
While in REPL the loader gotten with .getContextClassLoader is an instance of clojure.lang.DynamicClassLoader,
the latter is an sun.misc.Launcher$AppClassLoader.
How can I get an clojure.lang.DynamicClassLoader?
Or am I wrong with something?
Please teach me any information about this.
Regards,
Yoshinori Kohyama