У меня есть проект с такой структурой:
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");
}
config.properties
id = myApp
destination.host = localhost
destination.port = 9898
Main.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, он работает нормально, но когда я делаю банку и пытаюсь выполнить, я получаю эту ошибку
назад 28, 2018 10:23:28 org.apache.commons.beanutils.FluentPropertyBeanIntrospector introspect
ИНФОРМАЦИЯ: Ошибка при создании PropertyDescriptor для публичного финала void org.apache.commons.config
uration2.AbstractConfiguration.setProperty (java.lang.String, java.lang.Object)! Игнорирование этого свойства.
Исключение в потоке "Thread-1" java.lang.ExceptionInInitializerError
на com.main.Main.connect (Main.java:47)
на com.main.Main.access $ 0 (Main.java:46)
на com.main.Main $ 1.run (Main.java:37)
at java.lang.Thread.run (неизвестный источник)
Вызвано: 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
Разве баночка не видит файл config.properties?