Clojure:clojure.java.io/resource如何加载文件?

5

clojure.java.io/resource可以从类路径加载文件,但是可以在jar文件之外吗?当我把文件放在jar文件中时,它会加载文件,但是当我把文件放在类路径之外但在jar文件中时,它不会加载文件。

示例

Jar名称:hello.jar 在jar文件中有一个名为hello.txt的文件

java -jar hello.jar 

我使用以下代码行阅读hello.txt文件时没有发现问题:

我看不出读取hello.txt文件的任何问题:

(->
  "hello.txt"
  (clojure.java.io/resource)
  (clojure.java.io/file)
  (slurp))

但是当我将hello.txt放在jar包外但在类路径中时,它无法加载文件。
java -cp . -jar hello.jar 

hello.txt文件与hello.jar文件在同一目录中。

敬礼, Mamun

1个回答

3

您不能以那种方式混合使用-cp-jar命令行参数。您只能执行以下操作...

java -cp ".:hello.jar" com.foo.Class  # should use ; instead of : on Windows

或者添加一个

Class-Path: /some/dir/with/hello /some/dir/with/hello/hello.jar

访问包含本地目录的META-INF/MANIFEST.MF文件。(详见

我建议您不要使用.作为目录,因为如果jar文件移动,这将容易出现错误或安全问题。


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