2016-11-14 6 views
0

мигрировали изПолучение NullPointerException на org.apache.velocity.runtime.RuntimeInstance.parse (RuntimeInstance.java:1198)

<groupId>org.apache.velocity</groupId> 
    <artifactId>velocity</artifactId> 
    <version>1.5</version> 

в

<groupId>org.apache.velocity</groupId> 
    <artifactId>velocity</artifactId> 
    <version>1.7</version> 

При выполнении следующей инструкции

VelocityContext vc = getVelocityContext(valuesMap); 
StringWriter writer = new StringWriter(); 
Velocity.evaluate(vc, writer, "[generate email processor - event id = " + event.getId() + "]", bodyTemplate); 

Я получаю

java.lang.NullPointerException 
     at org.apache.velocity.runtime.RuntimeInstance.parse(RuntimeInstance.java:1198) 
     at org.apache.velocity.runtime.RuntimeInstance.parse(RuntimeInstance.java:1181) 
     at org.apache.velocity.runtime.RuntimeInstance.evaluate(RuntimeInstance.java:1297) 
     at org.apache.velocity.runtime.RuntimeInstance.evaluate(RuntimeInstance.java:1265) 
     at org.apache.velocity.app.Velocity.evaluate(Velocity.java:180) 
     at net.nationalpayment.core.backend.GenerateMessageProcessor$EventProcessor.generateMessage(GenerateMessageProcessor.java:1361) 
     at net.nationalpayment.core.backend.GenerateMessageProcessor$EventProcessor.run(GenerateMessageProcessor.java:1155) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
     at java.lang.Thread.run(Thread.java:745) 
java.lang.NullPointerException 
     at org.apache.velocity.runtime.RuntimeInstance.parse(RuntimeInstance.java:1198) 
     at org.apache.velocity.runtime.RuntimeInstance.parse(RuntimeInstance.java:1181) 
     at org.apache.velocity.runtime.RuntimeInstance.evaluate(RuntimeInstance.java:1297) 
     at org.apache.velocity.runtime.RuntimeInstance.evaluate(RuntimeInstance.java:1265) 
     at org.apache.velocity.app.Velocity.evaluate(Velocity.java:180) 
     at net.nationalpayment.core.backend.GenerateMessageProcessor$EventProcessor.generateMessage(GenerateMessageProcessor.java:1361) 
     at net.nationalpayment.core.backend.GenerateMessageProcessor$EventProcessor.run(GenerateMessageProcessor.java:1155) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
     at java.lang.Thread.run(Thread.java:745) 

Я инициализирую RuntimeSingleton один раз во время выполнения приложения, как показано ниже.

if(!RuntimeSingleton.isInitialized()) { 
     RuntimeSingleton.init(); 
    } 

Почему я получаю исключение NullPointerException?

+3

Почему вы не отлаживаете свой код? Таким образом, вы можете увидеть состояние переменных. – Juvanis

+0

Я попытался и понял, что команда (парсер парсер = (парсер) parserPool.get();) бросает его (возможно, parserPool = null). Я думал, что это связано с неинициализированным классом org.apache.velocity.runtime.RuntimeInstance. Инициализируйте то же самое, что указано в описании проблемы, чтобы инициализировать его. Но все же я получаю это. – Developer

+0

Я бы предположил, что ваш шаблон вызывает этот нулевой указатель. - Какая строка шаблона? Невозможно мне сказать. – henrik

ответ

0

В скорости (версия 1.7). Свойства были экстернализованы в файл свойств с именем speed.property.

После указания следующих свойств, оставляющих все остальные значениями по умолчанию в соответствии с моим требованием. Проблема была решена.

runtime.log = /tmp/velocity.log