簡體   English   中英

我如何使用 lein exec 要求 clojure.java.io?

[英]How do I require clojure.java.io with lein exec?

我對 clojure 完全陌生。 我想開始編寫簡單的腳本,即使腳本包含依賴項,我也遇到了 lein-exec 作為這樣做的一種方式。 雖然我可以運行我在網上找到的示例,但我不知道如何要求 clojure.java.io。

(require 'leiningen.exec)

;places the dependency on the classpath
(leiningen.exec/deps '[[enlive/enlive "1.1.4"]])
(require '[net.cgrand.enlive-html :as html])

我如何使用 lein exec 需要像 clojure.java.io 這樣的東西?

編輯:添加更多細節

(require 'leiningen.exec)

(leiningen.exec/deps '[[clojure.java.io]])

(require 'clojure.java.io)

(defn Example []
   (.exists (clojure.java.io "Example.txt")))

(Example)

給我

Caused by: java.lang.IllegalArgumentException: Provided artifact is missing a version: [clojure.java.io]

和這個

(require 'leiningen.exec)

;(leiningen.exec/deps '[[clojure.java.io]])

(require 'clojure.java.io)

(defn Example []
   (.exists (clojure.java.io "Example.txt")))

(Example)

給我

Caused by: java.lang.ClassNotFoundException: clojure.java.io

好吧,就我個人而言,我建議使用inlein而不是lein-exec來使用 Clojure 編寫腳本:

我覺得它更好,它使用標准的 lein 依賴關系映射來定義你的依賴關系。

其次,這個: (require 'clojure.java.io)是 require clojure.java.io的正確方法。 該命名空間包含在 Clojure 本身中,因此您無需聲明對任何其他庫的額外依賴即可使用它。

你的問題是你沒有正確使用它:

(.exists (clojure.java.io "Example.txt"))

在上面的代碼中,你調用clojure.java.io就好像它是一個函數,但它不是一個函數,它是一個命名空間。 您需要在其中選擇一個函數來調用,例如file函數。 如果這是 Java,您可以將命名空間視為類,將函數視為類上的方法。 如果你這樣做:

(.exists (clojure.java.io/file "Example.txt"))

它現在應該可以工作了。 請注意 Clojure 中的語法是: namespace/function 這與 Java 或 Python 等其他一些語言不同,您將在其中使用: some.location.class.method代替,基本上該函數也由. . 在 Clojure 中不是這樣,在 Clojure 中,函數部分是用/分隔的。

暫無
暫無

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

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