Java getResourceAsStream()能否找到jar文件之外的文件?

Java getResourceAsStream()能否找到jar文件之外的文件?,java,resources,jar,Java,Resources,Jar,我正在开发一个应用程序,它使用一个库将配置文件加载为: InputStream in = getClass().getResourceAsStream(resource); 然后将我的应用程序打包到.jar文件中。如果resource在.jar文件中,我可以将路径指定为“/relative/path/to/resource/resource” 我想知道如果资源在.jar文件之外,是否可以找到它,在这种情况下,我将如何指定路径 (假设我的应用程序的jar位于app/中,而资源位于app/conf

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

InputStream in = getClass().getResourceAsStream(resource);
然后将我的应用程序打包到
.jar
文件中。如果
resource
.jar
文件中,我可以将路径指定为
“/relative/path/to/resource/resource”

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

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


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


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

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

通常,它可以。从技术上讲,类的
ClassLoader
用于定位参数()中命名的资源。如果您没有使用特殊的
类加载器
,那么您将获得引导类加载器,它将搜索类路径。因此,如果类路径上有目录或其他jar文件,则会对它们进行搜索。

有一种方法可以获取当前目录(),但是对于配置,您只需将
-Dconfig.location
传递给JVM,为配置指定一个绝对路径

@并且库将资源用作配置文件(它是第三方库)。我还想调整配置文件,而不必一直解压缩jar文件。事实上,我忘了问我是否可以用另一种方式来完成这一点:)这些信息是相关的,所以我把它编辑成了问题。是否可以指示第三方API(例如,通过您的应用程序)在何处查找资源?基本上,我的意思是建议不要把它和应用程序放在一起。是的,但是在一个稳定且可复制的路径中-例如
user.home
的子目录中。我只注意到了一个写着“applet”的位置。这实际上是一个小程序吗?这会使事情更加复杂。@AndrewThompson不,它不是小程序。它是一个常规的java应用程序。