JFinal打成jar包后resources/webapp的静态资源无法访问

最近在使用Jfinal3.6搭建一个项目开发框架,打成jar包运行后,发现resources/webapp的静态资源无法访问,麻烦波总解答一下,项目目录结构如下:

image.png

在idea启动运行是可以直接访问

image.png

通过接口请求跳转页可以访问到静态页面

http://127.0.0.1:8090/login

image.png

MainConfig.java的configEngin(Engine me) 方法中也添加如下两行代码

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

image.png

打成jar包后就不行了

image.png

jar包解压出来后的目录结构如下:

image.png

image.png

image.png

评论区

JFinal

2019-05-07 12:19

静态资源得配置:
undertow.resourcePath = classpath:static

如果你有多个地点,可以用逗号分隔,例如:
undertow.resourcePath = src/main/webapp, classpath:webapp

以 classpath: 打头的, undertow 会去 class path 和 jar 包内找静态资源,一般配置成:
classpath:static 或者 classpath:webapp

JFinal

2019-05-07 12:22

注意一下 configEngine 中的配置是与 undertow 的静态资源配置无关的

configEngien 中的 me.setToClassPathSourceFactory(),是指定 enjoy 引擎去 class path 或者 jar 包中寻找 模板文件,这里与静态资源无关,只找模板文件

而 me.setBaseTemplatePath("webapp"),是在找模板的时候,先给定一个前缀路径,相当于这个路径是配合 getTemplate(String fileName) 中的 fileName 生成一个: baseTemplatePath + fileName

注意区分这几者,不要混杂这些概念就好解决

孤傲苍狼

2019-05-07 12:50

问题解决,感谢波总指导

孤傲苍狼

2019-05-07 12:50

@JFinal 波总一句话解决了我的困扰,非常感谢

JFinal

2019-05-07 16:06

@孤傲苍狼 classpath:... 这种配置在文档中都有, jfinal undertow 的文档极少,一定要仔细看完

热门反馈

扫码入社