java - 从 Jar Java 外部的配置文件中读取

标签 java executable-jar

目前我正在尝试从项目目录的根目录读取我的配置文件,为了进行实际配置,我想将其移动到外部位置,然后从那里读取。

在以下代码中添加完整路径会抛出错误:

package CopyEJ;

import java.util.Properties;

public class Config
{
   Properties configFile;
   public Config()
   {
    configFile = new java.util.Properties();
    try {
     // configFile.load(this.getClass().getClassLoader().getResourceAsStream("CopyEJ/config.properties"));
      Error Statement ** configFile.load(this.getClass().getClassLoader().getResourceAsStream("C://EJ_Service//config.properties"));
    }catch(Exception eta){
        eta.printStackTrace();
    }
   }

   public String getProperty(String key)
   {
    String value = this.configFile.getProperty(key);
    return value;
   }
}

这是错误:

java.lang.NullPointerException
    at java.util.Properties$LineReader.readLine(Properties.java:365)
    at java.util.Properties.load(Properties.java:293)
    at CopyEJ.Config.<init>(Config.java:13)
    at CopyEJ.CopyEJ.main(CopyEJ.java:22)
Exception in thread "main" java.lang.NullPointerException
    at java.io.File.<init>(File.java:194)
    at CopyEJ.CopyEJ.main(CopyEJ.java:48)

我该如何解决这个问题?

最佳答案

getResourceAsStream 方法的目的是打开某个文件的流,该文件存在于 inside 您的 jar 中。如果您知道特定文件的确切位置,只需打开新的 FileInputStream

即你的代码应该是这样的:

try (FileInputStream fis = new FileInputStream("C://EJ_Service//config.properties")) {
     configFile.load(fis);
} catch(Exception eta){
     eta.printStackTrace();
}

关于java - 从 Jar Java 外部的配置文件中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17423960/

相关文章:

java - Android EditText 字段被设置为当前时间而不是用户输入的时间

java - 从同一文件夹中的 JAR 访问文件

Java、gRPC 和上下文传播

java - 我如何找到是否在 Swing 上打开了一个窗口

java - 如何在可执行 JAR 中加载 TestNG 配置?

ajax - 远程运行大型 RIA 应用程序的挑战

macos - 无法在 Mac OS X 10.7.5 上启动 javafx jar

java - spring工具套件创建可运行的jar错误查找配置文件

java - 使用 Gradle 插件中的单独类路径执行 Java 类

java - 如果我在 Java 中使用模式和匹配器,如何找到匹配数?