首页 > 解决方案 > 如何使用可执行 JAR 文件更新在 Java 中运行时从文件中读取的变量?

问题描述

我正在为一个班级开发一个不和谐的机器人,但我的令牌和 github 遇到了问题。我正在尝试对其进行设置,以便从可以使用机器人令牌更新的 config.properties 文件中读取令牌。但是,我的教授说我应该设置它,以便我有一个可以从 GitHub 存储库作为发行版下载的二进制可执行文件,用户只需在他们被指示的指定文件夹中提供他们自己的 config.properties 文件。但是,我不明白/不知道如何编译依赖于运行时读取的文件的值的可执行 Java 程序,而无需在每次更改 config.properties 文件后重新编译。现在,我将应用程序设置为 JAR 文件,但我没有 不知道如何在不将其作为 JAR 共享的情况下使程序可供用户下载,但这意味着每次更改 config.properties 文件后都需要重新编译它。我不知所措,不确定我是否完全理解 JAR 文件。

编辑:这是我用来读取配置属性的代码。

public class ReadConfig {
    String token = "";
    InputStream inputStream = null;
    // won't take string with file
    String file = "config.properties";
    Properties prop = new Properties();

    public String getToken() throws IOException{
        try{
            inputStream = getClass().getClassLoader().getResourceAsStream(file);
            prop.load(inputStream);
            token = prop.getProperty("token");
           // System.out.println("Token: " + token);
        } catch (Exception e){
            System.out.println("Exception: " + e);
        } finally {
            inputStream.close();
        }
        return token;
    }
}

我的 config.properties 文件结构如下:

# Config properties for the bot
token=TOKENHERE

我一直在 Intellij 中使用Gradle ShadowJar 插件来创建可执行 JAR。我尝试将 JAR 移动到与 config.properties 文件相同的文件夹,并在运行之间更新 config.properties 文件,但如果我使用无效令牌进行更新,它仍然可以工作,直到我完全重建并重新编译 JAR .

标签: javagithubjardiscord

解决方案


推荐阅读