2015-07-21 71 views
3

我有一個程序,在運行之前需要讀取一個csv文件。這些數據位於我的clojure項目中的資源文件夾中。如何確保我的.jar正在從獨立文件內讀取數據

當從"resources/data.cv"渾渾噩噩時,程序運行良好,但是這導致.jar不是獨立的,但需要資源文件夾。

當我運行lein uberjar時,如何確保資源也被編譯?我試過(csv/slurp-csv (io/resource "mma_duffing.csv")但是.jar文件不能運行。任何幫助是極大的讚賞!

+0

你是否設法讀取文件,如果你做'(println(slurp(io/resource「mma_duffing.csv」))''? – StianE

+2

當從一個jar文件運行時,io-resources的工作方式略有不同,該資源將具有如下協議:'jar:file:/blablabla/bla.jar!/ data.csv' ..如果csv庫在這裏使用自定義文件 - 讀者可能不知道如何處理這個協議。檢查csv-library的源代碼並查看它如何訪問文件。 – StianE

+0

嘗試減去'println',因爲我不需要它,它工作正常。不太清楚發生了什麼問題,但謝謝! –

回答

1

如果你把你的文件放到資源目錄,你就可以讀它的時候都做雷音運行,並通過使用像這樣的代碼運行的jar時:

(defn read-resource [] (slurp (.getResource (ClassLoader/getSystemClassLoader) "mydatafile")))

希望對你有用。 ..