java - 用maven构建的jar文件找不到配置文件
问题描述
我用maven构建了一个jar文件。我在 jar 文件中的唯一类中使用以下代码来尝试访问配置文件。
InputStream is = Myclass.class.getClassLoader().getResourceAsStream("/config.properties");
config.properties 文件位于路径 / 的 jar 文件中
我没有看到任何错误消息。但是当我尝试访问 Properties 对象中的值时,这些值为空。
Properties prop = new Properties();
prop.load(is);
serverUrl=prop.getProperty("serverUrl");
serverUrl 为空。
关于如何在 jar 文件中获取配置文件中的值的任何建议?
解决方案
在我意识到以下方式仅适用于在类路径中加载文件之前,我遇到了同样的问题。
InputStream is = Myclass.class.getClassLoader().getResourceAsStream("/config.properties");
无论文件是否在类路径中,我都使用Apache FileUtils来选择文件。例如,我使用了以下功能,它就像一个魅力。
String str = FileUtils.readFileToString(new File(path_to_your_file), "UTF-8");
IOUtils.toInputStream(str, "UTF-8"); // if you need InputStream object
您也可以查看FileUtils提供的其他 API,除了readFileToString
推荐阅读
- python - Python 和 xml.etree.ElementTree -
- javascript - 从字典中提取值(在 Node-RED 中)
- html - Spring Boot 应用程序 - thymeleaf 会在一段时间后加载图片。某种缓存问题?
- azure - Azure DevOps Pipeline Build Immutable Image (Packer) 找不到脚本
- memory-leaks - 通知程序的潜在内存泄漏
- docker - Docker NGINX sub_filter 在响应中不适用于 HTML-form-item “action”
- node.js - agent.add 不工作,而 console.log 是
- c# - ObserwableCollection 中的 SearchBar 和 List MVVM
- windows - 在 LotusScript 中确定 Windows 剪贴板的内容
- flutter - 如何在等待函数中添加超时