我的springboot项目(项目A)依赖于库(库B),它是jar文件(这也是我的项目,但源代码在编译项目A期间不存在)。在jar中,我有一个文件file2的目录di1。
项目结构:
- project A
-- src/main/java/com/test/ResourcesUtils.java
-- src/main/resources/dir1/file1
- library B
-- src/main/resources/dir1/file2
当我尝试从项目A获取资源时,一切都很好,例如:
InputStream is1 = ResourcesUtils.class.getClassLoader().getResourceAsStream("dir1\\file1);
InputStream is2 = ResourcesUtils.class.getClassLoader().getResourceAsStream("dir1/file1);
两者(is1、is2)均不为空。
当我尝试使用相同的方法从库B获取资源时,它不起作用
InputStream is1 = ResourcesUtils.class.getClassLoader().getResourceAsStream("dir1\\file2);
InputStream is2 = ResourcesUtils.class.getClassLoader().getResourceAsStream("dir1/file2);
变量is1为空,is2不为空。
我做错什么了吗?为什么它对来自主jar的资源和来自从属jar的资源的工作方式不同?
我不能只切换到第二个版本(使用“/”,因为我不控制传递给getResourceAsStream的字符串)
public static boolean existsInResource(Path path) {
try (InputStream is = ResourcesUtils.class.getClassLoader().getResourceAsStream(path.toString())) {
return is != null;
} catch (final IOException e) {
// handle exception
}
}
当提到文件1时,它是应用程序中的物理文件,我假设您在Windows上运行代码。文件1位于Windows文件系统中。
当引用文件2时,它位于JAR文件中。这不是windows文件系统,而是JAR文件。
除非你知道文件是物理文件,否则使用正斜杠更安全。\
是Windows NT之前旧的32位窗口的残留物。Windows NT里面(我不确定我是否记得正确)使用/
,命令处理器只使用\
。
我正在尝试将资源csv文件传递到我的Sprint Boot应用程序使用的jar中。尽管方法获取的资源参数=ReactiveWebContext资源[src/main/Resources/file.csv],但我总是得到该文件不存在的响应 > 在我的项目中,文件位于src/main/resources/file中。csv 正在应用中。属性,我定义: 在config类中: 在内部jar:Config类
问题内容: 我正在从Java项目的已编译JAR中的包中加载文本文件。相关目录结构如下: 我的代码通过调用返回来加载文件。 无论我使用什么,都将始终打印输出。我不确定为什么上面的方法行不通,所以我也尝试了: 这些都不起作用。我 读 了许多 问题至今的话题,但他们都不是有帮助的-通常情况下,他们只是说,使用根路径,这我已经在做负载文件。那,或者只是从当前目录加载文件(只是),我也尝试过。该文件将使用适
尝试使用@Path配置JAX-RS资源("/"), 但是,会忽略该资源并加载在资源中找到的第一个文件。 你知道如何防止这种情况并让资源发挥作用吗?清除META-INF/resources时,JAX-RS资源会正确加载。 使用:Quarkus 1.4.2。最终的 openjdk版本“11.0.6”2020-01-14 LTS openjdk运行时环境Zulu11.37 52-SA(构建11.0.6
但是,试图使用@path("/“)配置JAX-RS资源时,该资源被忽略,而在resources中找到的第一个文件被加载。 有没有办法防止这种情况并允许资源工作?清除meta-inf/resources时,JAX-RS资源会正确加载。 答复:
在使用Maven捆绑JAR文件中的资源时,我有一种感觉,我错过了一些关键的东西。我的目录结构是标准的Maven结构(即\src\main\java,\src\main\Resources)。 使用IDE时,我将资源文件引用为\main\resources\images\blah。。。它工作得很好,但当Maven捆绑JAR文件时,它会将路径放在相对于根的位置(“\ images\blah”),因此没
问题内容: 在我的应用程序中,我以这种方式加载资源: 这给了我: 当我从IDE运行我的应用程序时,但是当我运行应用程序的jar时,这可以很好地工作: 路径变为: 有什么办法解决这个问题? 我将使用“存储库”目录名称来创建此目录: 以相同的方式,我将获得一个文件名(而不是目录),并以这种方式使用它: 问题答案: 听起来你正在尝试使用或类似方法加载资源。不要那样做:不要调用,而是从中调用并读取数据。