gpt4 book ai didi

java - Xdocreport 在 IDE 中生成文件,但不是从 jar 生成文件

转载 作者:行者123 更新时间:2023-12-01 10:35:34 25 4
gpt4 key购买 nike

我使用xdocreport生成一个word文件。在 IDE 中它工作正常,但是一旦我将程序作为可运行的 jar 进行测试,该文件就不再生成,而是收到错误

fr.opensagres.xdocreport.core.XDocReportException: Null template engine. Set template engine with IXDocReport#setTemplateEngine.

当我使用 the xdocreport projet 中给出的教程尝试可运行的 jar 时,也会发生同样的事情

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import fr.opensagres.xdocreport.core.XDocReportException;
import fr.opensagres.xdocreport.document.IXDocReport;
import fr.opensagres.xdocreport.document.registry.XDocReportRegistry;
import fr.opensagres.xdocreport.template.IContext;
import fr.opensagres.xdocreport.template.TemplateEngineKind;

public class testing {

public static void main(String[] args) {
try {
// 1) Load ODT file by filling Velocity template engine and cache it to the registry
InputStream in = testing.class.getResourceAsStream("DocxProjectWithVelocity.docx");
IXDocReport report = XDocReportRegistry.getRegistry().loadReport(in,TemplateEngineKind.Velocity);

// 2) Create context Java model
IContext context = report.createContext();
Project project = new Project("XDocReport");
context.put("project", project);

// 3) Generate report by merging Java model with the ODT
OutputStream out = new FileOutputStream(new File("DocxProjectWithVelocity_out.docx"));
report.process(context, out);

} catch (IOException e) {
e.printStackTrace();
} catch (XDocReportException e) {
e.printStackTrace();
}
}
}

错误似乎发生在以下行:

 IXDocReport report = XDocReportRegistry.getRegistry().loadReport(in,TemplateEngineKind.Velocity);

关于如何克服这个问题的任何想法(至少通过教程)?我尝试过将文件放在许多不同的路径中,但可运行的 jar 仍然找不到它。

谢谢

最佳答案

我在可运行 jar 中的速度也遇到了同样的问题。解决这个问题的关键就写在异常信息中:

Set template engine with IXDocReport#setTemplateEngine

对我来说,设置 IXDocReport (ITemplateEngine 对象)和 FieldsMetadata (String = “速度”)物体。我的代码示例:

private void CreateTextFooterReportPdf(PdfFooterModel footerTemplate, String FullFilePath)
throws IOException, FileNotFoundException, Exception {
InputStream in = new FileInputStream("Path to your template Here");


IXDocReport report = XDocReportRegistry.getRegistry().loadReport(in, TemplateEngineKind.Velocity);

Properties properties = new Properties();
properties.setProperty("resource.loader", "class");
properties.setProperty(
"class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");


ITemplateEngine templateEngine = new VelocityTemplateEngine(properties);

report.setTemplateEngine(templateEngine);



FieldsMetadata metadata = report.createFieldsMetadata();
metadata.setTemplateEngineKind("Velocity");

......

希望对某人有帮助。

关于java - Xdocreport 在 IDE 中生成文件,但不是从 jar 生成文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34763127/

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