getResourceAsStream() 可以找到 jar 文件之外的文件吗?

发布于 2024-12-08 21:03:20 字数 500 浏览 0 评论 0原文

我正在开发一个应用程序,该应用程序使用一个加载配置文件的库:

InputStream in = getClass().getResourceAsStream(resource);

我的应用程序然后打包在 .jar 文件中。如果 resource 位于 .jar 文件内,我可以将路径指定为 "/relative/path/to/resource/resource"

我想知道如果资源位于 .jar 文件之外,是否可以找到该资源,在这种情况下,我将如何指定路径。

(假设我的应用程序的 jar 位于 app/ 中,资源位于 app/config 中)。


该程序使用第三方库。 该库使用该资源作为配置文件。

我还想调整配置文件,而不必一直解压缩 jar 文件。

I'm developing an application that uses a library that loads a configuration file as:

InputStream in = getClass().getResourceAsStream(resource);

My application in then packed in a .jar file. If resource is inside the .jar file, I can specify the path as "/relative/path/to/resource/resource".

I'd like to know if is it possible to find the resource if it is outside the .jar file, and in this case, how would I specify the path.

(Assuming my application's jar is in app/ and the resource is in app/config).


The program uses a 3rd party library.
The library uses the resource as a configuration file.

I also want to tweak the configuration file without having to unzip/zip the jar file all the time.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

剩一世无双 2024-12-15 21:03:20

一般来说,是的,可以。从技术上讲,类的 ClassLoader 用于定位参数中指定的资源 (请参阅此处的 Javadoc)。如果您没有使用特殊的ClassLoader,那么您将获得引导类加载器,它会搜索类路径。因此,如果类路径上有目录或其他 jar 文件,则会搜索它们。

In general, yes it can. Technically, the class's ClassLoader is used to locate the resource named in the parameter (see Javadoc here). If you're not using a special ClassLoader then you'll get the bootstrap class loader, which searches the class path. So, if you have directories or other jar files on the classpath, they will be searched.

念﹏祤嫣 2024-12-15 21:03:20

它将获取适当的类加载器可用的任何资源(getClass().getClassLoader() 将返回的资源)。类加载器是否包含 app 目录 jar 文件取决于应用程序上下文的其余部分。

It will get any resource which is available to the appropriate classloader (the one that getClass().getClassLoader() would return). Whether the classloader includes both the app directory and the jar files depends on the rest of your application context.

大姐,你呐 2024-12-15 21:03:20

有一种方法可以获取当前目录( 如何获取正在运行的 JAR 文件的路径?),但对于配置,您只需将 -Dconfig.location 传递给 JVM,指定配置的绝对路径

There is a way to get the current directory ( How to get the path of a running JAR file?), but for configuration you can just pass a -Dconfig.location to the JVM specifying an absolute path for the configuration

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文