org.apache.velocity.exception.ResourceNotFoundException:无法找到资源' templates / email / test.vm'

时间:2017-06-07 07:12:03

标签: java velocity apache-velocity

我的代码如下。

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:无法执行   查找资源' templates / email / test.vm'在   org.apache.velocity.runtime.resource.ResourceManagerImpl.loadResource(ResourceManagerImpl.java:452)     在   org.apache.velocity.runtime.resource.ResourceManagerImpl.getResource(ResourceManagerImpl.java:335)     在   org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:1102).....

"模板"文件夹在我的src文件夹中。

  

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

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

请帮我解决这个问题。

谢谢和问候, IsuruJ

3 个答案:

答案 0 :(得分: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())

答案 1 :(得分:1)

几个问题可能导致它

  1. 模板文件夹是速度的根,因此删除它可能有效

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

  2. 大写的文件被Windows忽略为:文件夹无法找到电子邮件或文件Test.vm

  3. 如果用户不是所有者

  4. ,则新文件夹/文件的权限不允许读取

答案 2 :(得分:0)

感谢您的时间。 这是一个ANT项目。错误地我无法编写脚本来将模板文件夹复制到WEB-INF / classes文件夹。那就是问题所在。 @ user7294900和@sopadpadman都是正确的。代码现在可以使用了。

非常抱歉给您带来不便。

最诚挚的问候, IsuruJ