org.apache.velocity.exception.ResourceNotFoundException: 无法找到资源 'templates/email/test.vm'
org.apache.velocity.exception.ResourceNotFoundException: Unable to find resource 'templates/email/test.vm'
我的代码如下。
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: Unable to
find resource 'templates/email/test.vm' at
org.apache.velocity.runtime.resource.ResourceManagerImpl.loadResource(ResourceManagerImpl.java:452)
at
org.apache.velocity.runtime.resource.ResourceManagerImpl.getResource(ResourceManagerImpl.java:335)
at
org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:1102).....
"template" 文件夹在我的 src 文件夹中。
If I directly put the velocity template file into src folder and
update as "Template tempalte = ve.getTemplate("test.vm");" it works.
我正在使用 Mac OS、Java 1.8、Eclipse Neon。
请帮我解决这个问题。
感谢和问候,
IsuruJ
很少有问题可能会导致它
Templates 文件夹是 velocity 的根目录,因此删除它可能有效
ve.getTemplate("/email/test.vm");
大写的文件被 windows 忽略为:找不到文件夹电子邮件或文件 Test.vm
新权限 folder/file 如果用户不是所有者则不允许读取
尝试设置以下变量并检查它是否有效
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())
感谢您的宝贵时间。
这是一个 ANT 项目。我错误地无法编写脚本来将模板文件夹复制到 WEB-INF/classes 文件夹。这就是问题所在。 @user7294900 和@soorapadman 都是正确的。代码现在可以工作了。
非常抱歉给您带来不便。
此致,
伊苏鲁
我的代码如下。
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: Unable to find resource 'templates/email/test.vm' at org.apache.velocity.runtime.resource.ResourceManagerImpl.loadResource(ResourceManagerImpl.java:452) at org.apache.velocity.runtime.resource.ResourceManagerImpl.getResource(ResourceManagerImpl.java:335) at org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:1102).....
"template" 文件夹在我的 src 文件夹中。
If I directly put the velocity template file into src folder and update as "Template tempalte = ve.getTemplate("test.vm");" it works.
我正在使用 Mac OS、Java 1.8、Eclipse Neon。
请帮我解决这个问题。
感谢和问候, IsuruJ
很少有问题可能会导致它
Templates 文件夹是 velocity 的根目录,因此删除它可能有效
ve.getTemplate("/email/test.vm");
大写的文件被 windows 忽略为:找不到文件夹电子邮件或文件 Test.vm
新权限 folder/file 如果用户不是所有者则不允许读取
尝试设置以下变量并检查它是否有效
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())
感谢您的宝贵时间。 这是一个 ANT 项目。我错误地无法编写脚本来将模板文件夹复制到 WEB-INF/classes 文件夹。这就是问题所在。 @user7294900 和@soorapadman 都是正确的。代码现在可以工作了。
非常抱歉给您带来不便。
此致, 伊苏鲁