Java 如何从jar外部读取资源文件

Java 如何从jar外部读取资源文件,java,Java,我想读取jar外部的配置文件,该怎么做? 我尝试了classloader.getResourceAsStream(“config.xml”),在Intellij中运行代码时成功了。现在我想将jar构建到一个文件夹中,并将config.xml放在同一个文件夹下,而不是放在jar中,但是程序无法检测到config.xml 有没有一种优雅的方式来读取config.xml而不是在代码中使用带有相对路径的文件,这在IDE内部调试/运行时不起作用 是的,将其转换为系统属性,并将其提供给运行任何Java进程/

我想读取jar外部的配置文件,该怎么做?
我尝试了
classloader.getResourceAsStream(“config.xml”)
,在Intellij中运行代码时成功了。现在我想将jar构建到一个文件夹中,并将
config.xml
放在同一个文件夹下,而不是放在jar中,但是程序无法检测到
config.xml


有没有一种优雅的方式来读取
config.xml
而不是在代码中使用带有相对路径的
文件
,这在IDE内部调试/运行时不起作用

是的,将其转换为系统属性,并将其提供给运行任何Java进程/应用程序的任何对象

假设您在
/some/path/down/the/line/
中有一个
config.xml
文件,那么您可以执行以下操作:
java--classpath-Dapp.config=/some/path/down/the/line/config.xml tld.domain.Application

然后,在Java代码中需要做的就是引用该名称/路径:
final字符串configFile=System.getProperty(“app.config”),并使用任何已知的例程从中读取


基本上,您必须确保文件/path/location以某种方式提供给Java类路径。

您的代码在类路径中查找名为config.xml的资源。因此,如果包含此文件的文件夹位于运行时类路径中,则可以使用。否则,它不会。就这么简单。不要依赖于类路径,试着将其作为普通文件读取。