gpt4 book ai didi

java - 在 jar 文件中加载速度模板

转载 作者:IT老高 更新时间:2023-10-28 20:39:38 27 4
gpt4 key购买 nike

我有一个项目,我想加载一个速度模板来完成它的参数。整个应用程序被打包为一个 jar 文件。我最初的想法是这样的:

VelocityEngine ve = new VelocityEngine();

URL url = this.getClass().getResource("/templates/");

File file = new File(url.getFile());

ve = new VelocityEngine();
ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "file");
ve.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, file.getAbsolutePath());
ve.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_CACHE, "true");

ve.init();

VelocityContext context = new VelocityContext();

if (properties != null) {
stringfyNulls(properties);
for (Map.Entry<String, Object> property : properties.entrySet()) {
context.put(property.getKey(), property.getValue());
}
}

final String templatePath = templateName + ".vm";
Template template = ve.getTemplate(templatePath, "UTF-8");
String outFileName = File.createTempFile("report", ".html").getAbsolutePath();
BufferedWriter writer = new BufferedWriter(new FileWriter(new File(outFileName)));

template.merge(context, writer);

writer.flush();
writer.close();

当我在 Eclipse 中运行它时,它工作得很好。但是,一旦我打包程序并尝试使用命令行运行它,我就会收到错误,因为找不到文件。

我想问题出在这一行:

ve.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, file.getAbsolutePath());

因为在 jar 中绝对文件不存在,因为它在 zip 中,但我还没有找到更好的方法。

有人有什么想法吗?

最佳答案

如果你想使用类路径中的资源,你应该使用类路径的资源加载器:

ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath"); 
ve.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName());

关于java - 在 jar 文件中加载速度模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2931516/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com