ResourceNotFoundException на существующий путь

У меня есть следующий класс:

public class EmailService {

    static {
        Velocity.setProperty("resource.loader", "class");
        Velocity.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
        Velocity.init();
   }
   public void sendTerminalModerationStatusChangedEmail(Terminal terminal, String to) {
        ...
        Template subjectTemplate = null;
        try {
            subjectTemplate = Velocity.getTemplate(existedPath, "UTF-8");
        } catch (URISyntaxException e) {
            e.printStackTrace();  
        }
        ...
   }
}

В отладке я вижу, что существующий путь действительно существует. но я получил следующую ошибку:

Unable to find resource 'C:/Program Files (x86)/apache/apache-tomcat-7.0.52/webapps/ROOT/WEB-INF/classes/velocityTemplates/terminalModerationStatusChanged.vm'

Но файл C:/Program Files (x86)/apache/apache-tomcat-7.0.52/webapps/ROOT/WEB-INF/classes/velocityTemplates/terminalModerationStatusChanged.vm действительно существует на моем компьютере, и я могу перейти к нему, если набрать скопированный путь к адресной строке.

1 ответ

Решение

Вместо того, чтобы использовать полный абсолютный путь, загрузите его из classpath, потому что он уже находится в папке классов.

subjectTemplate = 
     Velocity.getTemplate("velocityTemplates/terminalModerationStatusChanged.vm", "UTF-8");
Другие вопросы по тегам