java如何从jar中读取资源文件?
我想像这样从我的jar中读取资源:
File file;
file = new File(getClass().getResource("/file.txt").toURI());
BufferredReader reader = new BufferedReader(new FileReader(file));
//Read the file
并且在Eclipse中运行它时效果很好,但是如果我将其导出到jar中运行,则会出现IllegalArgumentException
:
Exception in thread "Thread-2"
java.lang.IllegalArgumentException: URI is not hierarchical
我真的不知道为什么,但是经过一些测试,我发现我是否改变了
file = new File(getClass().getResource("/file.txt").toURI());
至
file = new File(getClass().getResource("/folder/file.txt").toURI());
然后它的作用相反(它在jar中起作用,但在Eclipse中不起作用)。
我正在使用Eclipse,并且包含我的文件的文件夹位于类文件夹中。
-
而不是尝试将资源作为文件寻址,只需让
ClassLoader
返回资源的InputStream
,而不是通过getResourceAsStream
:InputStream in = getClass().getResourceAsStream("/file.txt"); BufferedReader reader = new BufferedReader(new InputStreamReader(in));
只要该
file.txt
资源在类路径上可用,那么此方法将以相同的方式工作,而不管该file.txt
资源是位于classes/
目录中还是位于之中jar。URI is not hierarchical发生这种情况是因为jar文件中资源的URI看起来像这样:
file:/example.jar!/file.txt
。你无法读取jar(zip文件)中的条目,就像原来的File一样。
-
如何从Java jar文件读取资源文件?
2021-02-02 关注 0 浏览96 1答案
-
从 jar 中读取资源文件
2022-05-26 关注 0 浏览19 1答案
-
如何从jar添加和读取资源文件
2021-01-30 关注 0 浏览100 1答案
-
如何从Spring Boot Jar中排除资源文件?
2021-02-02 关注 0 浏览106 1答案
-
从servlet读取资源文件
2021-02-01 关注 0 浏览128 1答案
-
如何从不同的JAR中读取多个具有相同名称的资源文件?
2021-01-30 关注 0 浏览108 1答案
-
在Spring Boot中从资源文件夹读取文件
2021-02-02 关注 0 浏览182 1答案
-
Java 如何从资源文件夹加载文件?
2021-02-02 关注 0 浏览152 1答案
-
如何正确引用资源文件进行JAR和调试?
2021-01-30 关注 0 浏览110 1答案
-
如何在Tomcat中部署的未爆炸战争文件中读取资源文件?
2021-02-01 关注 0 浏览95 1答案