Загрузка шаблона скорости внутри фляги

У меня есть проект, в котором я хочу загрузить шаблон скорости, чтобы дополнить его параметрами. Все приложение упаковано в файл JAR. То, что я первоначально думал сделать, было этим:

VelocityEngine ve = new VelocityEngine();

   URL url = this.getClass().getResource("/templates/");

   File file = new File(url.getFile());

   ve = new VelocityEngine();
   ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "file");
   ve.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, file.getAbsolutePath());
   ve.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_CACHE, "true");

   ve.init();

   VelocityContext context = new VelocityContext();

   if (properties != null) {
    stringfyNulls(properties);
    for (Map.Entry<String, Object> property : properties.entrySet()) {
     context.put(property.getKey(), property.getValue());
    }
   }

   final String templatePath = templateName + ".vm";
   Template template = ve.getTemplate(templatePath, "UTF-8");
   String outFileName = File.createTempFile("report", ".html").getAbsolutePath();
   BufferedWriter writer = new BufferedWriter(new FileWriter(new File(outFileName)));

   template.merge(context, writer);

   writer.flush();
   writer.close();

И это прекрасно работает, когда я запускаю его в затмении. Однако, как только я упаковываю программу и пытаюсь запустить ее с помощью командной строки, я получаю сообщение об ошибке, поскольку файл не найден.

Я полагаю, проблема в этой строке:

ve.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, file.getAbsolutePath());

Потому что в банке абсолютного файла не существует, так как он внутри zip, но я пока не смог найти лучшего способа сделать это.

У кого-нибудь есть идеи?

Ответы на вопрос(4)

Ваш ответ на вопрос