jfinal中 ​Engine生成文件异常

Engine生成文件异常

java.lang.IllegalArgumentException: File not found in CLASSPATH or JAR : "E:\code\jfDemo\target\WEB-INF\classes\tpl\demo.tpl"


核心代码如下 

Engine engine = new Engine();
engine.setDevMode(true);
engine.setToClassPathSourceFactory();
engine.setBaseTemplatePath(null);
String tpl = "E:\code\jfDemo\target\WEB-INF\classes\tpl\demo.tpl";
String path= "C:\Users\Administrator\Desktop\result.html";
engine.getTemplate(tpl).render(kv, path);

评论区

JFinal

2019-05-13 11:07

engine.setToClassPathSourceFactory() 这行代码指定了从 class path 以及 jar 包内读取模板

那么 getTemplate 的时候,使用的路径是相对于 class path 的根目录,以及 jar 包的根目录

但是你的模板目录是 "E:\code\jfDemo\target\WEB-INF\classes\tpl\"

上面两个目录再以 clas path 或 jar 包为根目录, 就错到十万八千里去了。因为你的 class path 已经处在 "E:\code\jfDemo\target\WEB-INF\classes\" 之下

应该使用:
engine.getTemplate("tpl/demo.tpl");

JFinal

2019-05-13 11:07

文档中反复强调过,异常信息中也已经说得很明白:
File not found in CLASSPATH or JAR

注意后面的: CLASSPATH or JAR,并且还是大写的,表示强调

j1066783215

2019-05-13 13:54

@JFinal 谢谢波总 之前都在SQL用engine 没好好看文档. 其实就是setToClassPathSourceFactory指定到class path .后面的getTemplate()就是相对路径了.