0

我的代码如下。

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:无法在 org.apache.velocity.runtime.resource.ResourceManagerImpl.loadResource(ResourceManagerImpl.java:452) 在 org.apache.velocity 找到资源“模板/电子邮件/test.vm” .runtime.resource.ResourceManagerImpl.getResource(ResourceManagerImpl.java:335) 在 org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:1102).....

“模板”文件夹在我的 src 文件夹中。

如果我直接将速度模板文件放入 src 文件夹并更新为 "Template tempalte = ve.getTemplate("test.vm");" 有用。

我正在使用 Mac OS、Java 1.8、Eclipse Neon。

请帮我解决这个问题。

谢谢和问候, IsuruJ

4

3 回答 3

2

尝试设置以下变量并检查它是否可以工作

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())
于 2017-06-07T09:46:14.093 回答
1

几个问题可能会导致它

  1. Templates 文件夹是速度的根目录,因此删除它可能会起作用

    ve.getTemplate("/email/test.vm");

  2. windows忽略的大写文件为:找不到文件夹电子邮件或文件Test.vm

  3. 如果用户不是所有者,则不允许读取新文件夹/文件的权限

于 2017-06-07T07:30:40.343 回答
0

谢谢你的时间。这是一个 ANT 项目。错误地我无法编写脚本将模板文件夹复制到 WEB-INF/classes 文件夹。这就是问题所在。@user7294900 和 @soorapadman 都是正确的。该代码现在有效。

真的很抱歉给您带来不便。

最好的问候, IsuruJ

于 2017-06-07T10:29:41.563 回答