尝试获取 ftl 模板时未找到文件异常
File not found exception when trying to get the ftl template
我写了一个 java 程序,我必须在其中呈现 ftl 并在 String 变量中获取输出。
请在下面找到我的代码:
Configuration cfg = new Configuration();
StringWriter stringWriter = new StringWriter();
try
{
Template template = cfg.getTemplate("src/response.get.html.ftl");
model.put("content",contextModel);
template.process(model, stringWriter);
System.out.println(stringWriter);
}
但是我在 Template template = cfg.getTemplate("src/response.get.html.ftl");
中收到找不到文件异常
我已将我的响应文件放在 src 中,并将我的 java 文件放在 [= 包中21=]com.test.webscripts。根据 http://viralpatel.net/blogs/freemaker-template-hello-world-tutorial/ 没问题。但无法弄清楚为什么我会得到例外。有人可以帮我吗?
提前致谢!
请检查您的PATH环境变量,是否包含您的工作区路径和项目路径?否则可能会导致该错误。
另一种解决错误的简单方法是更改以下行中的路径:
Template template = cfg.getTemplate("src/response.get.html.ftl");
而不是 'src/response.get.html.ftl' 插入从根目录到文件的完整路径。即:'c://workspac/username/com/companyname/projectName/src/response.get.html.ftl'
注意:如果您正在使用 windows,请确保您的文件没有 hidden extension。
我建议你使用方法getResource(),例如,在这种情况下:
setIconImage(Toolkit.getDefaultToolkit().getImage(Menu.class.getResource("/resource/profut_1.PNG")));
通常 src
在运行时不可访问,因为它仅供编译器和其他构建工具使用。构建完成后,应用程序应该只依赖于构建的输出("binary"),即使在 IDE 中 src
仍然存在(与部署时不同申请)。
此外,您还没有显示 TemplateLoader
您使用的是什么。您可能应该这样做:
cfg.setClassForTemplateLoading(SomeClassInMyApp.class, "/");
然后:
cfg.getTemplate("response.get.html.ftl");
更安全的做法是创建一个子目录,比方说 com/mycompany/myapp/templates
,然后将模板放在那里。在那种情况下你需要这个:
cfg.setClassForTemplateLoading(SomeClassInMyApp.class, "/com/mycompany/myapp/templates");
请注意,cfg.getTemplate("response.get.html.ftl"
保持不变,因为您指定了相对于模板目录的路径。
我写了一个 java 程序,我必须在其中呈现 ftl 并在 String 变量中获取输出。 请在下面找到我的代码:
Configuration cfg = new Configuration();
StringWriter stringWriter = new StringWriter();
try
{
Template template = cfg.getTemplate("src/response.get.html.ftl");
model.put("content",contextModel);
template.process(model, stringWriter);
System.out.println(stringWriter);
}
但是我在 Template template = cfg.getTemplate("src/response.get.html.ftl");
我已将我的响应文件放在 src 中,并将我的 java 文件放在 [= 包中21=]com.test.webscripts。根据 http://viralpatel.net/blogs/freemaker-template-hello-world-tutorial/ 没问题。但无法弄清楚为什么我会得到例外。有人可以帮我吗?
提前致谢!
请检查您的PATH环境变量,是否包含您的工作区路径和项目路径?否则可能会导致该错误。
另一种解决错误的简单方法是更改以下行中的路径:
Template template = cfg.getTemplate("src/response.get.html.ftl");
而不是 'src/response.get.html.ftl' 插入从根目录到文件的完整路径。即:'c://workspac/username/com/companyname/projectName/src/response.get.html.ftl'
注意:如果您正在使用 windows,请确保您的文件没有 hidden extension。
我建议你使用方法getResource(),例如,在这种情况下:
setIconImage(Toolkit.getDefaultToolkit().getImage(Menu.class.getResource("/resource/profut_1.PNG")));
通常 src
在运行时不可访问,因为它仅供编译器和其他构建工具使用。构建完成后,应用程序应该只依赖于构建的输出("binary"),即使在 IDE 中 src
仍然存在(与部署时不同申请)。
此外,您还没有显示 TemplateLoader
您使用的是什么。您可能应该这样做:
cfg.setClassForTemplateLoading(SomeClassInMyApp.class, "/");
然后:
cfg.getTemplate("response.get.html.ftl");
更安全的做法是创建一个子目录,比方说 com/mycompany/myapp/templates
,然后将模板放在那里。在那种情况下你需要这个:
cfg.setClassForTemplateLoading(SomeClassInMyApp.class, "/com/mycompany/myapp/templates");
请注意,cfg.getTemplate("response.get.html.ftl"
保持不变,因为您指定了相对于模板目录的路径。