IDEA 多模块项目下Undertow启动报错问题

java.lang.RuntimeException: File not found : D:\idea\workspace\test\test-web/_view/_admin/common/__admin_layout.html
	at com.jfinal.template.source.FileSource.getContent(FileSource.java:70)
	at com.jfinal.template.EngineConfig.doAddSharedFunction(EngineConfig.java:93)
	at com.jfinal.template.EngineConfig.addSharedFunction(EngineConfig.java:88)
	at com.jfinal.template.Engine.addSharedFunction(Engine.java:245)
	at io.jblog.common.JblogConfig.configEngine(JblogConfig.java:108)
	at com.jfinal.core.Config.configJFinal(Config.java:57)
	at com.jfinal.core.JFinal.init(JFinal.java:61)
	at com.jfinal.core.JFinalFilter.init(JFinalFilter.java:62)
	at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:111)

提示找不到html等资源文件,跟踪代码是资源路径没有加载进来

需要修改配置文件

undertow.txt

# js、css 等等 web 资源存放的目录
undertow.resourcePath=webapp, {修改为自己的项目名}/src/main/webapp, src/main/webapp

目前发现只是IDEA出现这个问题,不影响打包发布。


评论区

JFinal

2018-12-13 15:43

这个分享十分有用,已经有两个同学有这个需求了,如果再多来几个同学,官方文档会添加这个内容

JFinal

2018-12-13 15:50

我自己也收藏一份,下次有同学问这个问题,直接扔链接

JFinal

2018-12-14 18:06

尝试一个新的更加通用的解决方案,这么来配置:
undertow.resourcePath=webapp, ../src/main/webapp, src/main/webapp

也就是说,不用输入项目名或者 module 名,而是用 ".." 上级目录来代替,记得搞定后回来反馈给我

板砖哥

2019-01-04 14:05

@JFinal 用 ".."代替 上级目录不可行

板砖哥

2019-01-04 14:05

@JFinal 多module项目,用 ".."代替 上级目录不可行,已测试

达少d

2019-04-23 14:27

@板砖哥 看看你Run/Debug Configurations 里面的 Working directory跟你当前的model是不是一个或者选%MODULE_WORKING_DIR%

好酷的人

2019-08-28 17:34

我只能通过改IDEA的working directory来实现,改undertow.txt没有用

KingTiger

2019-09-03 17:25

我的页面在 src/main/resources 下,设置 undertow.resourcePath=src/main/resources,main方法启动,可用

JFinal

2019-09-03 17:36

@KingTiger 页面在 src/main/resources 下,正确的姿势是:
configEngine(Engine me) {
me.setToClassPathSourceFactory();
}

src/main/resources 这个目录下的资源会被输出到 class path,也就是说这个目录相当于 class path,所以可以配置为:ClassPathSourceFactory 让 enjoy 加载资源

这种情况不要去配置 undertow.resourcePath

KingTiger

2019-09-03 19:16

@JFinal java.lang.IllegalArgumentException: File not found in CLASSPATH or JAR : "D:/Project_Git/jboot-admin/jboot-admin/template/login.html" main方法启动,请求报错

KingTiger

2019-09-03 19:20

@JFinal

2019-09-03 19:18:02.918 [ERROR] com.jfinal.core.JFinalFilter - /login
java.lang.IllegalArgumentException: File not found in CLASSPATH or JAR : "D:/Project_Git/jboot-admin/jboot-admin/target/jboot-admin-1.0/webapp/template/500.html"
at com.jfinal.template.source.ClassPathSource.(ClassPathSource.java:66)
at com.jfinal.template.source.ClassPathSourceFactory.getSource(ClassPathSourceFactory.java:29)
at com.jfinal.template.Engine.buildTemplateBySourceFactory(Engine.java:158)
at com.jfinal.template.Engine.getTemplate(Engine.java:145)
at io.jboot.web.render.JbootRender.render(JbootRender.java:62)
at com.jfinal.render.ErrorRender.render(ErrorRender.java:51)
at io.jboot.web.handler.JbootActionHandler.handle(JbootActionHandler.java:130)
at io.jboot.web.handler.JbootHandler.doHandle(JbootHandler.java:46)
at io.jboot.web.handler.JbootHandler.handle(JbootHandler.java:36)

脚本启动,请求报错

KingTiger

2019-09-03 19:20

@JFinal webapp 这没有配置,不知道为什么会自动加上

_imlzw_

2019-09-17 15:45

关于Jfinal-undertow在 Intellij IDEA 下执行时模板路径不正确问题解决!
https://my.oschina.net/imlzw/blog/3106769

JFinal

2019-09-17 16:29

@_imlzw_ 谢谢分享,赞

wozniak

2019-09-19 18:17

@JFinal 有不少用户经常在使用 model.find(....) 这类方法时碰到 NullPointerException 异常,通常是由于该 model 没有使用 ActionRecordPlugin.addMapping(....) 进行过映射。 建议通过生成器自动化生成映射,无需手工添加这类代码,生成器在本站首页下载 jfinal demo,里面有提供,这个有没有办吧重源码避开,我们少踩点坑,很多都遇到了不要写注意,注意太多了就是不太美好的

稻草人ABC

2019-12-12 13:59

@JFinal 弄了半天,一直找不到页面,,,跟官方的 demo 对比都没有发现有什么不对的地方,,一直无法加载到 webapp,,最后来看到这个 才解决掉,

JFinal

2019-12-12 16:30

@稻草人ABC 其实在文档中早已有过说明:
https://jfinal.com/doc/1-5

一定要多看文档

稻草人ABC

2019-12-12 16:57

樱花抄

2020-03-01 18:34

@JFinal 大佬,我在IDEA里面用jetty启动项目,也报了找不到html的错误,怎么解决啊?

小猪贝

2020-07-03 16:01

@_imlzw_ 厉害,就是这个,改了就好了

演眽

2020-07-27 14:57

@达少d 感谢,你的方法一改就完美~谢谢

Chiclaim

2020-12-14 17:45

多谢,终于把 demo 运行起来了,感谢

热门分享

扫码入社