如何确保我的.jar文件从独立文件中读取数据

3
我有一个程序,在运行之前需要读取一个csv文件。这个数据位于我的clojure项目的资源文件夹中。
当从"resources/data.cv" slurping时,程序可以正常运行,但是这会导致.jar文件不是独立的,而是需要资源文件夹。
如何确保在运行"lein uberjar"时也编译资源?
我尝试过(csv/slurp-csv (io/resource "mma_duffing.csv")),但是.jar文件无法运行。非常感谢您的帮助!

如果您执行(println (slurp (io/resource "mma_duffing.csv"))),您能够成功读取文件吗? - StianE
2
当从jar文件中运行时,io资源的工作方式会略有不同,资源将具有如下协议:jar:file:/blablabla/bla.jar!/data.csv。如果此处的csv库使用了某种自定义文件读取器,则可能不知道如何处理此协议。请检查csv库的源代码并查看它是如何访问文件的。 - StianE
我尝试了一下去掉println,因为我不需要它,结果很好。不太确定出了什么问题,但还是谢谢! - Willyb
1个回答

1
如果您将文件放入资源目录中,则可以使用以下代码在进行lein run和运行jar时读取它:
(defn read-resource [] (slurp (.getResource (ClassLoader/getSystemClassLoader) "mydatafile")))
希望这对您有所帮助...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接