首页 > 解决方案 > 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 文件吗?

标签: javajar

解决方案


文件config.properties应该在资源文件夹下。


推荐阅读