【问题标题】:How to read from resource file outside jar [duplicate]如何从jar外部的资源文件中读取[重复]
【发布时间】:2019-12-20 05:46:42
【问题描述】:

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

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

【问题讨论】:

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

标签: java


【解决方案1】:

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

假设您有一个位于/some/path/down/the/line/ 内的config.xml 文件,那么您可以这样做:java --classpath ... -Dapp.config=/some/path/down/the/line/config.xml tld.domain.Application

那么您在 Java 代码中所要做的就是引用该名称/路径:final String configFile = System.getProperty("app.config");,并使用任何众所周知的例程从那里读取它。

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

【讨论】:

    猜你喜欢
    • 2013-12-08
    • 2021-11-21
    相关资源
    最近更新 更多