Velocity 2.0无法在jar中找到模板资源

时间:2018-06-25 08:34:15

标签: java spring-boot velocity

我在Spring Boot 5中使用Velocity 2.0来发送电子邮件。我从src / main / resources / email /加载模板,并在config.xml文件中将VelocityEngine定义为bean

<bean id="velocityEngine" class="org.apache.velocity.app.VelocityEngine">
    <property name="properties">
        <props>
            <prop key="resource.loader">file</prop>
            <prop key="file.resource.loader.class">org.apache.velocity.runtime.resource.loader.FileResourceLoader</prop>
            <prop key="file.resource.loader.path">src/main/resources/templates/email/</prop>
            <prop key="file.resource.loader.cache">true</prop>
            <prop key="file.resource.loader.modificationCheckInterval">5</prop>
        </props>
    </property>
</bean>

当我从Intellij IDEA运行它时,一切正常,但是当我构建jar以在服务器上运行它时,会抛出异常: org.apache.velocity.exception.ResourceNotFoundException:无法找到资源“ MyTemplate.vm”。知道如何解决吗?我将不胜感激

1 个答案:

答案 0 :(得分:0)

因此,您正在使用FileResourceLoader并为其指定相对路径“ src / main / resources / templates / email /”

因此,除非相对于您的应用程序运行位置的路径在服务器上,否则它会为您提供完全合理的错误代码。

要在bean配置上使用ClasspathResourceLoader,并确保模板正确包装在生成的jar中,您想做什么。