My Leiningen項目需要一些我試圖從Clojure訪問的外部Java類。在Leiningen項目中使用Java代碼
起初,我試圖把類文件中MY_PROJECT /資源/,因爲該目錄是在其上運行
lein classpath
但是證實classpath中,我無法訪問即使從簡單的玩具的Java類Clojure駐留在所述目錄中。爲了讓事情儘可能簡單,我的玩具類沒有包裝聲明。我的第二種方法是在我的project.clj中添加一個:java-source-path鍵,但我又一次被失敗所觸發(與上面相同的行爲,我無法從Clojure REPL訪問該類)。
我在哪裏錯了?
.class和.java文件都位於resources /和java sources目錄中(java /在我的情況下)。無論如何,因爲資源/ *實際上在類路徑中,所以我期望Java類可以很容易地從Clojure中獲得(我的Java類沒有任何包聲明,因此我希望它們在不導入任何內容的情況下可用)。 – Christian
我不會指望沒有包的類只能自動遍歷,但我不知道java類加載器或編譯器的細節。 Clojure本身需要顯式導入java.lang之外的任何內容(即使clojure.lang類不會自動導入)。如果沒有更好的建議出現,我會嘗試爲這些類設置軟件包(java文件和clojure代碼中的import語句的相應目錄) –
編輯的時限之外:如果您的類沒有包,我想clojure代碼中的普通'(import'YourClass)'應該可以工作,儘管在clojure中至少推薦使用2層包,因爲我現在不記得技術原因。 –