Jfinal undertow整合 Beetl,打包jar后,无法找到模板

按照波总的例子,修改如下:

1, //支持beetl
        JFinal3BeetlRenderFactory rf = new JFinal3BeetlRenderFactory();
        rf.config();
        me.setRenderFactory(rf);

2,   //这里应该是用jfinal自带的engine的开关?

        me.setBaseTemplatePath("webapp");
        me.setToClassPathSourceFactory();

3,undertow下的的配置

undertow.resourcePath=src/main/resources/webapp, classpath:webapp

4, 所有的资源都在resources/webapp下面。

在eclipse里能正常运行,打包后出现

10:05:07:错找不到指定模板或者加载错(TEMPLATE_LOAD_ERROR): 位于0行 资源:/index/index.html 模板根目录为 /Users/doctormacky/Downloads/jfinal_demo_for_maven/target/webapp/
WebAppResourceLoader,Root=/Users/doctormacky/Downloads/jfinal_demo_for_maven/target/webapp/


猜测应该是第1步出了问题,JFinal3BeetlRenderFactory这里,如果打包成Jar后,那么资源部应该在/Users/doctormacky/Downloads/jfinal_demo_for_maven/target/webapp/ 这里,而应该在jar里。这种情况是需要重新写他的ResourceLoader吗?还是我哪里配置的有问题?请波总指点。谢谢


评论区

2019-05-20 16:08

采用的beetl的话,用下面的方案可以解决:
//支持beetl
JFinal3BeetlRenderFactory rf = new JFinal3BeetlRenderFactory();
ClasspathResourceLoader resourceLoader =
new ClasspathResourceLoader("webapp/");
rf.config(resourceLoader);
me.setRenderFactory(rf);
注意,不能使用默认的ResourceLoader,否则就会出现打包成jar后找不到模板的问题

gdyxml

2020-02-15 13:18

我也是同样的问题,在tomcat下没有问题,无论是开发环境还是生产环境;在undertow开发环境下运行没有问题,但打成jar,脱离 idea或者eclipse运行,就不行,错误和上面一样; 感觉是把模板打到jar中,在undertow下是解析不到的;把模板放到硬盘目录就可以,求解~

gdyxml

2020-02-15 13:21

按照 1楼 饭 的做法,就会出现上面我说的问题;tomcat下,没有问题;undertow下,打成jar报运行,提示找不到模板。

gdyxml

2020-02-15 13:24

貌似undertow 运行Jar包 是不解压的,所以ClasspathResourceLoader应该还是找不到,求解~

JFinal

2020-02-15 13:59

@gdyxml 打成 jar 包以后找模板,应该需要配置它的 ClasspathResourceLoader 去找文件

此外,你要注意检查一下 jar 包中是否将模板文件打包进去了,用 winrar 打开 jar 包检查一下

最后,这个问题是与 undertow 运行 jar 包解压不解压无关的,因为 jar 包中的内容是 java 去读的,不需要 undertow 处理

热门反馈

扫码入社