Java 在非Spring启动应用程序中从外部源(JAR文件外部)加载Thymeleaf模板

Java 在非Spring启动应用程序中从外部源(JAR文件外部)加载Thymeleaf模板,java,thymeleaf,Java,Thymeleaf,调用getTemplate()方法时抛出此错误- “解析模板[betreff_product_request]时出错,模板可能不存在,或者任何配置的模板解析程序都无法访问该模板”。 是不是因为我在templateResolver.setPrefix(“D:\\templates\\”)中提到的错误路径。 我怎样才能解决这个问题 public class MailerTemplateEngine { private final TemplateEngine templateEngine;

调用getTemplate()方法时抛出此错误- “解析模板[betreff_product_request]时出错,模板可能不存在,或者任何配置的模板解析程序都无法访问该模板”。 是不是因为我在templateResolver.setPrefix(“D:\\templates\\”)中提到的错误路径。 我怎样才能解决这个问题

public class MailerTemplateEngine {
    private final TemplateEngine templateEngine;

    public MailerTemplateEngine() {

        this.templateEngine = new org.thymeleaf.TemplateEngine();
        FileTemplateResolver  templateResolver = new FileTemplateResolver ();
        templateResolver.setPrefix("D:\\templates\\");
        templateResolver.setSuffix(".txt");
        templateResolver.setTemplateMode(TemplateMode.TEXT);
        templateResolver.setOrder(templateEngine.getTemplateResolvers().size());
        templateResolver.setCharacterEncoding("UTF-8");
        templateResolver.setCacheable(false);
        templateResolver.setCheckExistence(true);
        this.templateEngine.setTemplateResolver(templateResolver);
    }

    public String getTemplate(String templateName, HashMap<String,String> parameters) {
        Context ctx = new Context();

        if (parameters != null) {
            parameters.forEach((k, v) -> {
                ctx.setVariable(k, v);
            });
        }

        return this.templateEngine.process(templateName, ctx).trim();
    }

}
公共类MailerTemplateEngine{
私有最终模板引擎模板引擎;
公共邮件模板引擎(){
this.templateEngine=new org.thymeleaf.templateEngine();
FileTemplateResolver templateResolver=newfiletemplateresolver();
templateResolver.setPrefix(“D:\\templates\\”;
templateResolver.setSuffix(“.txt”);
templateResolver.setTemplateMode(TemplateMode.TEXT);
setOrder(templateEngine.getTemplateResolver().size());
templateResolver.setCharacterEncoding(“UTF-8”);
templateResolver.setCacheable(false);
templateResolver.setCheckExistence(true);
这个.templateEngine.setTemplateResolver(templateResolver);
}
公共字符串getTemplate(字符串templateName、HashMap参数){
Context ctx=新上下文();
if(参数!=null){
参数.forEach((k,v)->{
ctx.setVariable(k,v);
});
}
返回这个.templateEngine.process(templateName,ctx).trim();
}
}

您是否在(非Spring)web应用程序中运行此功能?如果是,哪一个?否则,您是如何运行它的(例如,一个独立的javajar,等等)?值得一提的是,您的代码在我的环境中运行良好(独立的JAR,没有web服务器)。我可以打开一个文本模板,并用Thymeleaf指令处理它。这表明问题出在别处。文件访问权限?文件名不匹配?ThymalLeaf部分是在一个Maven应用程序中实现的,从另一个Spring Boot应用程序中,我获得了Maven应用程序的功能。谢谢,问题是,我的Maven应用程序在服务器上运行,我试图获得本地驱动器中的ThymalLeaf模板文件夹。现在我把模板文件夹放在服务器上,它运行得很好。你是在(非Spring)web应用程序中运行这个吗?如果是,哪一个?否则,您是如何运行它的(例如,一个独立的javajar,等等)?值得一提的是,您的代码在我的环境中运行良好(独立的JAR,没有web服务器)。我可以打开一个文本模板,并用Thymeleaf指令处理它。这表明问题出在别处。文件访问权限?文件名不匹配?ThymalLeaf部分是在一个Maven应用程序中实现的,从另一个Spring Boot应用程序中,我获得了Maven应用程序的功能。谢谢,问题是,我的Maven应用程序在服务器上运行,我试图获得本地驱动器中的ThymalLeaf模板文件夹。现在我把模板文件夹放在服务器上,它运行得很好。