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())
Немногие проблемы могут вызвать это
Папка Templates является корнем скорости, поэтому удаление ее может работать
ve.getTemplate("/ электронная почта /test.vm");
Файл с заглавными буквами, который игнорируется Windows как: папка Email или файл Test.vm не может быть найден
Права доступа к новой папке / файлу не разрешают чтение, если пользователь не является владельцем