【问题标题】:class.getResource returns a wrong path of my fileclass.getResource 返回我的文件的错误路径
【发布时间】:2013-07-02 19:18:27
【问题描述】:

我想使用 Velocity 来模板化我的电子邮件,但我很难给出模板的正确路径:“template.vm”,它位于我由 maven 创建的资源文件夹中。

我使用过:class.getResource("template.vm").getPath => 但是 getResource 重新运行 null 这是逻辑原因,因为我知道 template.vm 在这种情况下应该在类的同一个包中,并且我的模板.vm 在 WEB-INF/classes 上

所以我使用了:class.getResource("/template.vm").getPath,但它返回了错误的路径,在我的例子中,template.vm 的路径是:D:/folderOne/FolderTwo/WEB-INF/ classes/template.vm 和 getResource 重新运行:/D:/folderOne/FolderTwo/WEB-INF/classes/template.vm 什么使速度类抛出:无法找到具有给定路径的资源:/D:/folderOne/FolderTwo/ WEB-INF/classes/template.vm

我现在正在为这个小问题苦苦挣扎一天,请帮忙。

【问题讨论】:

  • 为什么需要路径?你不能只使用输入流吗?
  • 我需要将路径提供给速度方法以加载模板,我使用速度如下:模板 t = VelocityEngine.getTemplate(String name) 当名称是模板的名称时:模板。虚拟机
  • @BadrDRAIFI 它的发生是因为你想从上下文中获取路径,试试这个stackoverflow.com/questions/2308188/…
  • @AkashYadav 我试过了,但总是同样的问题 ResourceNotFoundException

标签: java eclipse maven-2


【解决方案1】:

您应该使用 ClassPathResourceLoader 而不是 FileResourceLoader 作为 Velocity。如果您使用它,您只需拨打VelocityEngine.getTemplate("template.vm")即可。

【讨论】:

  • 我发现奇怪的是,为什么速度执行会抛出:ResourceNotFoundException:无法找到资源
  • 这是因为Class.getResource 返回URLURL.getPath 不符合您的预期。它不返回文件路径。它返回 URL 的路径部分。您的网址是file:///D:/FolderOne/FolderTwo/WEB-INF/classes/template.vm,网址的路径部分是/D:/FolderOne/FolderTwo/WEB-INF/classes/template.vm
  • 感谢@losa 的帮助!
猜你喜欢
  • 2014-02-07
  • 2020-01-28
  • 1970-01-01
  • 2019-03-19
  • 1970-01-01
  • 2020-03-24
  • 2011-11-27
  • 2021-12-20
  • 1970-01-01
相关资源
最近更新 更多