[英]programmatically compiling and loading java source files in clojure
在SO上出現以下問題后,我遇到了一些問題: 如何以編程方式編譯和實例化Java類?
以下是我的clojure翻譯:
(ns compile-and-load.core
(:import [javax.tools JavaCompiler ToolProvider]
[java.net URL URLClassLoader]))
(def src
(str "package test;\n"
"public class Test {\n"
" static { System.out.println(\"hello\");}\n"
" public Test() { System.out.println(\"world\");}}"))
(defn tmp-dir []
(clojure.java.io/file (System/getProperty "java.io.tmpdir")))
(def tmp (tmp-dir))
(spit (str (.getAbsolutePath tmp) "/Test.java") src)
(.run (ToolProvider/getSystemJavaCompiler)
nil nil nil
(let [arr (make-array String 1)]
(aset arr 0 (str (.getAbsolutePath tmp) "/Test.java"))
arr))
(def cl (URLClassLoader.
(let [arr (make-array URL 1)]
(aset arr 0 (.toURL (.toURI tmp)))
arr)))
(.loadClass cl "test.Test")
一切順利,直到最后一行。 有一個已編譯的Test.class,如果我將文件復制到target / classes / test文件夾中,則可以加載它。 但是在最后一行,我得到了ClassNotFoundException
。 我錯過了什么?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.