BeanInstantiationException - конструктор бросил исключение;вложенным исключением является java.lang.NullPointerException - PullRequest
2 голосов
/ 12 марта 2011

У меня странная проблема - невозможно создать экземпляр компонента, который вводится другому компоненту.

PropertiesUtil - это рассматриваемый компонент.Он вводится в класс LoginController следующим образом в моем sn-servlet.xml

  <bean name="/Login.html" class="org.sn.auth.LoginController">
    <property name="dbUtil" ref="dbUtil"/>
    <property name="propertiesUtil" ref="propertiesUtil"/>
  </bean>

, а мой PropertiesUtil.java

public class PropertiesUtil {

    private Properties properties;

    public PropertiesUtil() {
        properties = new Properties();
        try {            
                properties.load(ClassLoader.getSystemResourceAsStream(
                                    "/resources/messages.properties"));
        }
        catch (IOException ioException) {
            ioException.printStackTrace();
        }
    }
}

И исключение NullPointerException происходит в строке, где я пытаюсьиспользуйте ресурсы от properties до load.Я действительно сбит с толку, почему он нулевой, когда я явно запускаю его в предыдущей строке.

Я также пытался внедрить экземпляр properties как constructor-arg, а также как property изsn-servlet.xml, но все напрасно.

Есть ли что-то вроде того, что я не должен выполнять какие-либо операции в конструкторе, когда этот bean-компонент вставляется пружиной в какой-то другой класс?

Спасибо за любые идеи!

1 Ответ

4 голосов
/ 12 марта 2011

Проверьте Javadoc для ClassLoader.getResourceAsStream(). Возвращает null, если ресурс не может быть найден. Таким образом, может показаться, что messages.properties не может быть найден, и метод Properties.load () выдает NullPointerException при попытке чтения с нулевого значения InputStream.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...