【问题标题】:How do ensure my .jar is reading data from within the standalone file如何确保我的 .jar 从独立文件中读取数据
【发布时间】:2015-07-21 10:44:10
【问题描述】:

我有一个程序需要在运行前读取 csv 文件。此数据位于我的 clojure 项目的资源文件夹中。

程序运行良好,当从"resources/data.cv" 啜饮时,这会导致.jar 不是独立的,而是需要资源文件夹。

如何确保运行lein uberjar时资源也被编译?

我试过(csv/slurp-csv (io/resource "mma_duffing.csv") 但是.jar 文件将无法运行。非常感谢任何帮助!

【问题讨论】:

  • 如果你这样做了(println (slurp (io/resource "mma_duffing.csv"))),你能读到文件吗?
  • io-resources 从 jar 运行时的工作方式略有不同,资源将具有如下协议:jar:file:/blablabla/bla.jar!/data.csv.. 如果此处的 csv 库使用某种自定义文件阅读器,则可能不会知道如何处理这个协议。检查 csv-library 的源代码,看看它是如何访问文件的。
  • 试过这个减号println,因为我不需要它,而且效果很好。不太清楚出了什么问题,但谢谢!

标签: java csv clojure leiningen


【解决方案1】:

如果您将文件放入资源目录中,则可以在执行 lein run 和运行 jar 时使用以下代码读取它:

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

希望对你有用...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 2017-05-04
    • 2012-06-21
    • 2020-04-08
    • 2016-10-20
    相关资源
    最近更新 更多