java - 如何使用可执行 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 .
解决方案
推荐阅读
- java - 如何转换地图
其值为 json 到 POJO - reactjs - 没有显示任何东西
- javascript - Javascript - 使用 document.execcommand 添加行现有表但我犯了一些错误但我不知道它在哪里
- laravel - 临时签名路线在特定日期结束 laravel
- docker - 重启后 kubenetes 主节点未处于就绪状态
- spring - 如何在春季停止shell命令注入
- node.js - 使用节点 js 进行 Firebase 谷歌身份验证
- mysql - 如何附加 pg_dump 备份命令 PostgreSQL 的日志输出
- excel - 在 Excel 中提取以 B 开头且长度为 10 个字符的单词
- java - 如何在春季回滚整个循环的事务?