我在Spring Boot 5中使用Velocity 2.0发送电子邮件。我从 src/main/resources/email/加载模板,并将 VelocityEngine 定义为 config.xml 文件中的 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"。知道如何解决它吗?我将不胜感激任何帮助
因此,您正在使用FileResourceLoader并为其提供相对路径"src/main/resources/templates/email/">
因此,除非相对于应用程序运行位置的路径在服务器上,否则它会为您提供完全合理的错误代码。
在Bean 配置上使用 ClasspathResourceLoader 并确保您的模板被适当地打包在生成的 jar 中,你想做什么。