繁体   English   中英

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

[英]Can getResourceAsStream() find files outside the jar file?

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

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

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

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

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


该方案采用一个第三方库。 该库使用该资源作为配置文件。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM