java - jar 没有看到 config.properties?
问题描述
我有一个具有这种结构的项目:
myPoject
src
com.config
PropertiesFile.java
com.main
Main.java
resources
data.png
config.properties
public class PropertiesFile {
private static Logger logger = LogManager.getLogger(PropertiesFile.class);
private static final char CONFIG_DELIMITER = ',';
private static final String CONFIG = "config.properties";
private static org.apache.commons.configuration2.Configuration config;
static {
try {
Parameters params = new Parameters();
FileBasedConfigurationBuilder<FileBasedConfiguration> builder = new FileBasedConfigurationBuilder<FileBasedConfiguration>(PropertiesConfiguration.class)
.configure(params.properties()
.setFileName(CONFIG)
.setListDelimiterHandler(new DefaultListDelimiterHandler(CONFIG_DELIMITER)));
config = builder.getConfiguration(); }
catch (ConfigurationException cE) {
logger.fatal("Error", cE);
}
}
public static final String ID = config.getString("id");
public static final String DEST_HOST = config.getString("destination.host");
public static final int DEST_PORT = config.getInt("destination.port");
}
配置属性
id = myApp
destination.host = localhost
destination.port = 9898
主.java
public class Main{
public static void main(String[] args) throws InterruptedException {
Thread tc = new Thread(new Runnable() {
@Override
public void run() {
connect();
}
});
tc.start();
tc.join();
}
private static void connect() {
try (Socket socket = new Socket(PropertiesFile.DEST_HOST, PropertiesFile.DEST_PORT)) {
//...code
}
}
当我在 Eclipse 中运行它时它工作正常,但是当我制作 jar 并尝试执行时,我得到了这个错误
2018 年 2 月 28 日上午
10:23:28 .lang.Object)!忽略此属性。
com.main.Main.connect(Main.java:47)
处 com.main.Main.access$0(Main.java:46)
处 com.main.Main处
的线程“Thread-1”java.lang.ExceptionInInitializerError中的异常$1.run(Main.java:37)
at java.lang.Thread.run(Unknown Source)
原因:java.util.NoSuchElementException:键“destination.port”未映射到现有对象!
在 org.apache.commons.configuration2.AbstractConfiguration.throwMissingPropertyException(AbstractConfiguration.java:1911)
在 org.apache.commons.configuration2.AbstractConfiguration.checkNonNullValue(AbstractConfiguration.java:1898)
t org.apache.commons.configuration2.AbstractConfiguration.getInt (AbstractConfiguration.java:1262)
在 com.config.PropertiesFile.(PropertiesFile.java:43)
... 5 更多
jar 没有看到 config.properties 文件吗?
解决方案
文件config.properties
应该在资源文件夹下。
推荐阅读
- javascript - 不要在 webpack 构建中包含 JS 库(假设它会包含在脚本标签中)
- javascript - Recharts 自定义工具提示的 Typescript 界面
- marklogic - Marklogic 数据中心配置导出
- java - 具有两个泛型的泛型出现意外绑定错误
- python - 如何将频谱图图像与其人工标记的数据结合起来,在 Python 中使用 CNN 进行处理?
- ios - 一个字符串具有多种段落样式
- javascript - 是否有任何在时间更改时执行的 PrimeNg p-calendar 事件?
- javascript - 跨多个 Ajax POST 调用在成功函数中存储和更新全局值
- c# - 如何使用 c# API 授权 Azure Devops?
- hadoop - 如何在直线开始时删除 ADD jar 语句