簡體   English   中英

在Clojure REPL中使用自定義Java類

[英]Using custom Java classes in Clojure REPL

在Eclipse中,使用CCW插件,我想將clojure文件加載到REPL中。 問題是我有一個我自己的java類的import語句,但顯然它不在我的類路徑中。

(ns my-clj-ns
  (:import [alg.gen Enumerator]))

我是否需要在Clojure REPL中使用/測試的每個類中制作罐子?

目前,嘗試將我的clj加載到REPL會導致錯誤:“在Clojure REPL中加載文件”未正常完成。 有關更多信息,請參閱日志。 顯示java.lang.NullPointerException

任何幫助將不勝感激。

您可以讓leiningen為您編譯這些,

:javac-options {:destdir "classes/"}
:java-source-path "src/main/java" ; location of Java source

選項或手動編譯它們並將類文件移動到classes /目錄。 無需創建jar。

當你在ccw repl中時,你可以點擊alt-e來查看堆棧跟蹤。 如果你得到一個NullPointerException,我不認為它是一個類路徑問題。

如果你想學習如何做這個,那里有很好的指南。

https://github.com/technomancy/leiningen/blob/master/doc/MIXED_PROJECTS.md

但是在gist中,有一個類似於Java源代碼的項目定義。

(defproject megacorp/superservice "1.0.0-SNAPSHOT"
  :description "A Clojure project with a little bit of Java sprinkled here and there"
  :source-paths      ["src/clojure"]
  :java-source-paths ["src/java"])

你的代碼看起來很好。

我懷疑問題出在您的Eclipse Java Build Path上 ,它決定了Eclipse在應用程序的類路徑中包含的內容。

特別是,如果您的Java類位於單獨的項目中,則需要將該項目添加到構建路徑(右鍵單擊項目/屬性/ Java構建路徑/項目)或將其打包為jar。

當您開始擁有更復雜的構建要求時,您可能還想開始查看Maven以便為您處理此類事情。 Maven是一個學習/設置的痛苦,但從長遠來看它是值得的。

Leiningen也是一個很好的工具,但我個人不會因為以下原因使用它:

  1. 它在命令行上很棒,但是沒有與Eclipse工作流程很好地集成
  2. Maven在Java世界中得到了更廣泛的使用和更好的支持

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM