Почему я получаю эту ошибку с Velocity "Velocity не инициализируется правильно."?
Я инициализирую движок скорости внутри процессора аннотаций, который расширяет AbstractProcessor следующим образом:
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv)
{
String fqClassName = null;
String className = null;
String packageName = null;
Map<String, VariableElement> fields = new HashMap<String, VariableElement>();
Map<String, ExecutableElement> methods = new HashMap<String, ExecutableElement>();
...
if (fqClassName != null)
{
Properties props = new Properties();
URL url = this.getClass().getClassLoader().getResource("velocity.properties");
VelocityContext velocityContext = null;
Template template = null;
JavaFileObject javaFileObject;
Writer writer;
try
{
processingEnv.getMessager().printMessage(Kind.NOTE, "Before");
props.load(url.openStream());
processingEnv.getMessager().printMessage(Kind.NOTE, "Props: " + props);
VelocityEngine velocityEngine = new VelocityEngine();
velocityEngine.setProperty("resource.loader", "classpath");
velocityEngine.init();
...
} catch (Exception e1)
{
processingEnv.getMessager().printMessage(Kind.ERROR,
"Exception: " + e1.getMessage() + " : " + e1.getStackTrace());
}
}
return false;
}
Исключение происходит, когда init()
метод называется.
Я экспортирую процессор с jar-файлами Velocity в виде jar-файла и настраиваю eclipse для его использования в качестве процессора аннотаций.
1 ответ
Вы загружаете свои пользовательские свойства в props
переменная, но никогда не передавая их в Velocity.
Так что вы должны просто сделать что-то вроде:
velocityEngine.init(props)