2013-04-28 4 views
2

Я пытаюсь проверить a very simple example, приведенный в руководстве пользователя библиотеки конфигурации Apache-commons относительно объявления и создания beans. Я скопировал код в примере почти слово за словом, и все же я получаю исключение ConfigurationRuntimeException (это после преодоления другого исключения, см. this question).Очень простой пример конфигурации Apache-commons throwStageRuntimeException

Вот файл XML я использую - windowcongif.xml:

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<config> 
    <gui> 
    <windowManager config-class="test.DefaultWindowManager" 
     closable="false" resizable="true" defaultWidth="400" 
     defaultHeight="250">  
    </windowManager> 
    </gui> 
</config> 

Вот код в файле WindowManager.java:

package test; 
public interface WindowManager {} 

Вот код в файле DefaultWindowManager.java:

package test; 
public class DefaultWindowManager implements WindowManager { 
    private boolean resizable; 
    private boolean closable; 
    private int defaultWidth; 
    private int defaultHeight; 
} 

Вот код в файле Main.java:

package test; 
import org.apache.commons.configuration.ConfigurationException; 
import org.apache.commons.configuration.XMLConfiguration; 
import org.apache.commons.configuration.beanutils.BeanDeclaration; 
import org.apache.commons.configuration.beanutils.BeanHelper; 
import org.apache.commons.configuration.beanutils.XMLBeanDeclaration; 
import org.apache.commons.beanutils.PropertyUtils; 

public class Main { 
    public static void main(String[] args) throws ConfigurationException { 
     XMLConfiguration config = new XMLConfiguration("windowconfig.xml"); 
     BeanDeclaration decl = new XMLBeanDeclaration(config, "gui.windowManager"); 
     WindowManager wm = (WindowManager) BeanHelper.createBean(decl); 
    } 
} 

Здесь выход во время выполнения:

Exception in thread "main" org.apache.commons.configuration.ConfigurationRuntimeException: org.apache.commons.configuration.ConfigurationRuntimeException: Property defaultHeight cannot be set on test.DefaultWindowManager 
    at org.apache.commons.configuration.beanutils.BeanHelper.createBean(BeanHelper.java:341) 
    at org.apache.commons.configuration.beanutils.BeanHelper.createBean(BeanHelper.java:358) 
    at org.apache.commons.configuration.beanutils.BeanHelper.createBean(BeanHelper.java:372) 
    at test.Main.main(Main.java:24) 
Caused by: org.apache.commons.configuration.ConfigurationRuntimeException: Property defaultHeight cannot be set on test.DefaultWindowManager 
    at org.apache.commons.configuration.beanutils.BeanHelper.initProperty(BeanHelper.java:271) 
    at org.apache.commons.configuration.beanutils.BeanHelper.initBeanProperties(BeanHelper.java:229) 
    at org.apache.commons.configuration.beanutils.BeanHelper.initBean(BeanHelper.java:166) 
    at org.apache.commons.configuration.beanutils.DefaultBeanFactory.initBeanInstance(DefaultBeanFactory.java:108) 
    at org.apache.commons.configuration.beanutils.DefaultBeanFactory.createBean(DefaultBeanFactory.java:64) 
    at org.apache.commons.configuration.beanutils.BeanHelper.createBean(BeanHelper.java:336) 
    ... 3 more 

Как мне сделать этот простой пример работы?

Я использую версию 1.9 пакета Обще-конфигурации и версии 1.8.3 пакета Викисклада BeanUtils, автоматически импортированы IntelliJ IDEA после ввода зависимостей в файле pom.xml и версии 1.7.0_17 из java работает на Windows 8 64bit.

ответ

4

Если вы используете JavaBeans, вам нужно будет добавить установщик для каждого поля, которое вы хотите установить.

Предлагаю использовать для этого поля добавить setter and getter в IntelliJ.

Пример утверждает

// getters and setters ommitted, also the WindowManager methods