2015-05-29 3 views
1

У меня есть следующий класс: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 действительно существует на моей машине, и я могу перейти к нему, если типу скопирована пути к адресной строке.

+0

Почему вы используете полный путь, вместо того чтобы загружать его из ссылки на classpath как 'speedTemplates/terminalModerationStatusChanged.vm'? – K139

+0

@ K139 Вы правы – gstackoverflow

+0

Хорошо, добавив его в качестве ответа тогда. Спасибо! – K139

ответ

1

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

subjectTemplate = 
    Velocity.getTemplate("velocityTemplates/terminalModerationStatusChanged.vm", "UTF-8");