我使用lein uberjar创建一个应用程序的独立jar。
执行时
CD(char password_entered) {
它崩溃了:
java -jar dataloader-0.1.0-SNAPSHOT-standalone.jar,
我通过以下方式加载文件:
Caused by: java.lang.IllegalArgumentException: Not a file:
jar:file:dataloader-0.1.0-SNAPSHOT-standalone.jar!/configuration.json
project.clj
(ns dataloader.configuration
(:gen-class)
(:require [cheshire.core :refer :all]
[clojure.java.io :as io]))
(def data-file
(io/file
(io/resource "configuration.json")))
resources / configuration.json被放入jar的根文件夹
答案 0 :(得分:10)
clojure.java.io/resource
返回一个网址,而不是文件。这就是为什么你可以打电话给slurp
的原因。错误消息告诉您它不是文件,遗憾的是它没有告诉您它是一个网址。
当然你可以用java.net.URL api打开网址,虽然在这种情况下会有点过分。
答案 1 :(得分:4)
如果您想阅读configuration.json
文件的内容,请不要致电io/file
。相反,使用slurp
函数,如:
(def config (slurp (io/resource "configuration.json")))