gpt4 book ai didi

java - 读取与jar文件相同目录中的配置文件

转载 作者:行者123 更新时间:2023-11-30 01:58:38 25 4
gpt4 key购买 nike

我在 Intellij 中有一个简单的程序,只是为了测试读取配置文件的文件路径。

我创建了一个简单的测试用例,其中我将使用计时器以 N 个时间间隔定期打印“Hello world”,其中 N 以毫秒为单位,并且 N 是可配置的。

这是代码:

public void schedule() throws Exception {

Properties props=new Properties();

String path ="./config.properties";
FileInputStream fis=new FileInputStream(path);
BufferedReader in1=new BufferedReader(new InputStreamReader(fis));
// InputStream in = getClass().getResourceAsStream("/config.properties");

props.load(in1);
in1.close();
int value=Integer.parseInt(props.getProperty("value"));






Timer t=new Timer();
t.scheduleAtFixedRate(
new TimerTask() {
@Override
public void run() {
// System.out.println("HELEOELE");

try {
// test.index();
System.out.println("hello ");
} catch (Exception e) {
e.printStackTrace();
}

}
},
0,
value);





}

我所做的是在配置文件中将值设置为 N,任何人都可以在不触及实际代码的情况下更改它。所以我编译了 jar 文件,并将 config.properties 和 jar 文件放在同一文件夹或目录中。我希望能够更改 make N 可更改的内容,这样我就不需要每次都一次又一次地重新编译 jar。

注意:配置属性文件是手动创建的,并放置在与 jar 相同的目录中。我正在命令提示符下执行 jar。

但是,当我尝试运行它时,它似乎无法识别文件路径。

"main" java.io.FileNotFoundException: .\config.properties (The system cannot find the file specified)

我研究了许多有关读取 jar 文件之外的配置文件的问题,但没有一个对我有用。我在这里做错了什么吗?

最佳答案

./config.properties是指向 config.properties 的相对路径当前工作目录中的文件。

当前工作目录,除非被 System.setProperty("user.dir", newPath) 更改,将是您启动当前处理代码的 JVM 的目录。

要让您的 jar 按当前方式工作,您有两种可用的方法:

  1. 复制config.properties文件到您正在执行的目录java来自
  2. 更改您正在运行的目录 java从 到包含 config.properties 的那个
<小时/>

您还可以考虑让用户指定从何处获取属性文件:

String path = System.getProperty("propertiesLocation", "config.properties");

然后,您可以在调用 jar 时指定属性文件的位置:

java -jar /path/to/your.jar -DpropertiesLocation=/path/to/your.properties

或者像之前一样调用它,以在其默认位置 config.properties 搜索属性。在当前工作目录中。

关于java - 读取与jar文件相同目录中的配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53592016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com