将jfinal-2.2-bin.jar替换成jfinal-3.6-bin.jar,tomcat启动报错

将jfinal-2.2-bin.jar替换成jfinal-3.6-bin.jar后,tomcat启动报如下异常。但是整个项目代码中并未找到使用IMainRenderFactory的地方,请问如何解决?


java.lang.NoClassDefFoundError: com/jfinal/render/IMainRenderFactory

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Class.java:264)

at com.jfinal.core.JFinalFilter.createJFinalConfig(JFinalFilter.java:119)

at com.jfinal.core.JFinalFilter.init(JFinalFilter.java:60)

at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279)

at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260)

at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105)

at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4830)

at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5510)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575)

at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565)

at java.util.concurrent.FutureTask.run(FutureTask.java:266)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

at java.lang.Thread.run(Thread.java:745)

Caused by: java.lang.ClassNotFoundException: com.jfinal.render.IMainRenderFactory

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)

... 16 more


评论区

JFinal

2019-03-17 09:35

升级一定先看下升级文档
https://www.jfinal.com/doc/14-1

JFinal

2019-03-17 09:39

IMainRenderFactory 这个接口的功能统一到了 RenderFactory

如果以前扩展过 IMainRenderFactory,改为继承 RenderFactory 来做这个扩展

xuxumei

2019-03-17 10:23

@JFinal 但是代码里面并没有使用到IMainRenderFactory这个类

JFinal

2019-03-17 11:14

@xuxumei 代码里没用到,可能是你依赖的 jar 包里面用到了,这种问题很好排查,异常信息里头已经包含了出错的类的路径

xuxumei

2019-03-18 13:03

@JFinal 上面这个问题找到了,又出其他问题。请看看是哪个类里面的field没有?

java.lang.NoSuchFieldError: me
at com.jfinal.plugin.activerecord.dialect.Dialect.(Dialect.java:45)
at com.jfinal.plugin.activerecord.dialect.MysqlDialect.(MysqlDialect.java:29)
at com.jfinal.plugin.activerecord.Config.(Config.java:50)
at com.jfinal.plugin.activerecord.ActiveRecordPlugin.(ActiveRecordPlugin.java:75)
at com.jfinal.plugin.activerecord.ActiveRecordPlugin.(ActiveRecordPlugin.java:83)
at com.eova.config.EovaConfig.initActiveRecordPlugin(EovaConfig.java:472)
at com.oss.OSSConfig.configPlugin(OSSConfig.java:212)
at com.jfinal.core.Config.configPluginWithOrder(Config.java:70)
at com.jfinal.core.Config.configJFinal(Config.java:56)
at com.jfinal.core.JFinal.init(JFinal.java:61)
at com.jfinal.core.JFinalFilter.init(JFinalFilter.java:63)

JFinal

2019-03-18 15:44

@xuxumei Eova 有的版本貌似还没升级到 jfinal 最新版本 ,找一下作者问问 @Jieven

xuxumei

2019-03-19 08:41

@JFinal @Jieven eova.jar也升到最新版本了。不知道还有什么没升级,请两位帮忙看看

Jieven

2019-03-29 18:37

@xuxumei 目前开源版最新只支持到jfinal-java8 的那个版本, Java8 还没有完美支持, Eova主要关注的是业务层面的稳定, 其次才是更新各libs 到新版本.
不过马上就会 全面升级到jfinal最新版了, 也会把Beetl换成Enjoy

Jieven

2019-03-29 18:38

@xuxumei 目前Eova V1.6.0 可完美支持 JFinal3.4 是当时的jfinal最新版