org.apache.velocity.exception.ResourceNotFoundException: невозможно найти ресурс 'templates/email/test.vm'

Мой код, как следует.

VelocityEngine ve = new VelocityEngine();
        ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "class");
        ve.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
        ve.init();
        Template tempalte = ve.getTemplate("templates/email/test.vm");

Я получаю следующую ошибку.

org.apache.velocity.exception.ResourceNotFoundException: не удается найти ресурс 'templates/email/test.vm' в org.apache.velocity.runtime.resource.ResourceManagerImpl.loadResource(ResourceManagerImpl.java:452) в org.apache.velocity.runtime.resource.ResourceManagerImpl.getResource(ResourceManagerImpl.java:335) в org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:1102).....

Папка "template" находится в моей папке src.

Если я непосредственно помещу файл шаблона скорости в папку src и обновлю его как "Template tempalte = ve.getTemplate("test.vm");" оно работает.

Я использую Mac OS, Java 1.8, Eclipse Neon.

Пожалуйста, помогите мне решить это.

Спасибо и всего наилучшего, IsuruJ

3 ответа

Решение

Спасибо за ваше время. Это ANT проект. По ошибке я не смог написать скрипт для копирования папки с шаблонами в папку WEB-INF/classes. Это была проблема. И @user7294900, и @soorapadman верны. Код работает сейчас.

Извините за неудобства.

С наилучшими пожеланиями, IsuruJ

Попробуйте установить переменные ниже и убедитесь, что они работают

ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "class,file");
        ve.setProperty(RuntimeConstants.RUNTIME_LOG_LOGSYSTEM_CLASS, "org.apache.velocity.runtime.log.Log4JLogChute");
        ve.setProperty("runtime.log.logsystem.log4j.logger", "VELLOGGER");
        ve.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
        ve.setProperty("runtime.log.logsystem.class", "org.apache.velocity.runtime.log.NullLogSystem");

И ваш файл скорости должен быть под resources папка

Вышеуказанный способ у меня есть мой проект, если это не работает, попробуйте это

Я считаю, что ваша структура папок, как /src/main/java/com/xyz/email/velocity/.

ve.velocityEngine.setProperty(RuntimeConstants.RESOURCE_LOADER,"classpath");
  ve.velocityEngine.setProperty("classpath.resource.loader.class",ClasspathResourceLoader.class.getName())

Немногие проблемы могут вызвать это

  1. Папка Templates является корнем скорости, поэтому удаление ее может работать

    ve.getTemplate("/ электронная почта /test.vm");

  2. Файл с заглавными буквами, который игнорируется Windows как: папка Email или файл Test.vm не может быть найден

  3. Права доступа к новой папке / файлу не разрешают чтение, если пользователь не является владельцем

Другие вопросы по тегам