gpt4 book ai didi

java - JAR 在运行时会在 JAR(本身)内部还是外部查找资源文件?

转载 作者:行者123 更新时间:2023-12-01 11:19:04 27 4
gpt4 key购买 nike

java程序使用不同的文件,存储在路径“src/main/resources/files/files.drl”下。如果我将此程序导出为可运行的 JAR 并运行此 JAR,它会在 JAR 内部查找这些文件还是会在文件夹 src->main->resources->files 外部查找?

Java 程序如何使用这些文件的示例代码是:

drlFileName = "./src/main/resources/files/files.drl";
FileInputStream fis = null;
fis = new FileInputStream(drlFileName);
kbuilder.add( ResourceFactory.newInputStreamResource(fis), ResourceType.DRL);

最佳答案

在大多数情况下,应用程序的打包方式并不能决定它在哪里找到资源。它会在您告诉它查找的任何目录中查找。如果您通过使用各种 jar 文件 API(例如 java.util.jar.JarFile)指定一个 jar 文件,那么这就是您的程序的位置就会找到它的数据。如果您查看操作系统的文件系统(例如使用 java.io.FileInputStream 等),那么它将在其中找到其数据。

异常(exception)情况是当您使用 ClassLoader::getResource 时,它将搜索您的类路径以查找指定的资源。因此,例如,如果您的类路径指向单个 jar 文件,则将仅在该 jar 文件中查找资源。请注意,如果您使用自定义 ClassLoader 实现,则可以搜索其他位置 - URL、非类路径路径/jar 文件等。本质上,自定义 ClassLoader 可以使用任何可能的字节源来查找资源 - 这将取决于类加载器的设计目的是什么。

关于java - JAR 在运行时会在 JAR(本身)内部还是外部查找资源文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31464636/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com