项目启动报错,请问是什么原因,已经困扰我一天了,本地tomcat正常,服务器报错

报错信息我重两个文件中拿到,一直解决不了


catalina报错

2019-02-15 16:51:56

[ERROR]-[Thread: localhost-startStop-1]-[org.apache.catalina.core.StandardContext.filterStart()]: Exception starting filter [jfinal]

java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy

at sun.reflect.annotation.AnnotationParser.parseClassArray(AnnotationParser.java:724)

at sun.reflect.annotation.AnnotationParser.parseArray(AnnotationParser.java:531)

at sun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:355)

at sun.reflect.annotation.AnnotationParser.parseAnnotation2(AnnotationParser.java:286)

at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:120)

at sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:72)

at java.lang.reflect.Executable.declaredAnnotations(Executable.java:599)

at java.lang.reflect.Executable.declaredAnnotations(Executable.java:597)

at java.lang.reflect.Executable.getAnnotation(Executable.java:570)

at java.lang.reflect.Method.getAnnotation(Method.java:622)

at com.jfinal.aop.InterceptorManager.doBuild(InterceptorManager.java:83)

at com.jfinal.aop.InterceptorManager.buildControllerActionInterceptor(InterceptorManager.java:75)

at com.jfinal.core.ActionMapping.buildActionMapping(ActionMapping.java:86)

at com.jfinal.core.JFinal.initActionMapping(JFinal.java:100)

at com.jfinal.core.JFinal.init(JFinal.java:66)

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

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

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

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

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

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

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

at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752)

at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728)

at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)

at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1144)

at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1878)

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)

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)


2019-02-15 16:51:56

[ERROR]-[Thread: localhost-startStop-1]-[org.apache.catalina.core.StandardContext.startInternal()]: One or more Filters failed to start. Full details will be found in the appropriate container log file


2019-02-15 16:51:56

[ERROR]-[Thread: localhost-startStop-1]-[org.apache.catalina.core.StandardContext.startInternal()]: Context [] startup failed due to previous errors


localhost报错

2019-02-15 17:18:29,113 [localhost-startStop-1] ERROR org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/]- Exception starting filter [jfinal]

java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy

at sun.reflect.annotation.AnnotationParser.parseClassArray(AnnotationParser.java:724)

at sun.reflect.annotation.AnnotationParser.parseArray(AnnotationParser.java:531)

at sun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:355)

at sun.reflect.annotation.AnnotationParser.parseAnnotation2(AnnotationParser.java:286)

at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:120)

at sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:72)

at java.lang.reflect.Executable.declaredAnnotations(Executable.java:599)

at java.lang.reflect.Executable.declaredAnnotations(Executable.java:597)

at java.lang.reflect.Executable.getAnnotation(Executable.java:570)

at java.lang.reflect.Method.getAnnotation(Method.java:622)

at com.jfinal.aop.InterceptorManager.doBuild(InterceptorManager.java:83)

at com.jfinal.aop.InterceptorManager.buildControllerActionInterceptor(InterceptorManager.java:75)

at com.jfinal.core.ActionMapping.buildActionMapping(ActionMapping.java:86)

at com.jfinal.core.JFinal.initActionMapping(JFinal.java:100)

at com.jfinal.core.JFinal.init(JFinal.java:66)

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

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

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

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

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

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

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

at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752)

at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728)

at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)

at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1144)

at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1878)

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)

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)


评论区

JFinal

2019-02-15 17:40

信息 at com.jfinal.aop.InterceptorManager.doBuild(InterceptorManager.java:83) 有点价值 ,异常信息中没有 cause 部分,关键信息丢失

打开 InterceptorManagerjava 源码,看 83 行是什么

估计是你有多个版本的 jfinal 依赖,版本冲突

JFinal

2019-02-15 17:41

检查出问题运行时的 class path 下有没有多个 jfinal ,例如 tomcat 的 lib 下面有没有 jfinal.jar 之类的

2834511088

2019-02-15 17:42

@JFinal 感谢大佬及时回复,我去检查下

JFinal

2019-02-15 17:45

@2834511088 这里还有一个关键信息,异常中提到解析注释时出错,而 InterceptorManager 中很可能是解析 @Clear 这个注解出的问题,而老版本的对应注解名叫: @ClearInterceptor

也就是说新版本改过类名,如果你的 class path 下的 jfinal 版本与你项目中实质使用的不同,有可能是这个问题

2834511088

2019-02-15 17:50

我检查了下没有引入多余jar包,
jfinal的jar包,引入了这两个,
jfinal-3.2-bin.jar
jfinal-java8-3.3-20171121.152419-1.jar

至于源码第83行,我的版本是jfinal-3.2-bin.jar 用idea显示找不到源码

2834511088

2019-02-15 17:51

@JFinal
jfinal-3.2-bin.jar 的InterceptorManager类 解析时应该是@ClearInterceptor?

JFinal

2019-02-15 17:57

第二个 jar 包看上去被你们自己改造过,因为版本号并不是 jfinal 官方发布过的,建议使用第二个

删掉对第一个 jar 包的依赖

JFinal

2019-02-15 17:58

@ClearInterceptor 是很老的版本,应该不涉及到你的项目,因为你的项目都已经是 jfinal 3.x 起步了

基本确定了是多个 jar 包引起的冲突,去掉不要的

2834511088

2019-02-15 18:05

@JFinal
检查了一下,确实线上多了一个jfinal-java8-3.3-20171121.152419-1.jar的jar包,线下的lib中没这个包(我先把这个包删了试试)

然后我还检查到pom文件引入了一个jar包:pom文件引入jar包如下

com.jfinal
jfinal-java8
3.3-SNAPSHOT


pom文件引入的是上述两个中的哪个

JFinal

2019-02-15 18:08

@2834511088 直接使用 jfinal-3.6 ,你的版本已然是 3.3, 升到 3.6 很平滑,多数不需要改代码,这里有详细的升级文档:
https://www.jfinal.com/doc/14-1

JFinal

2019-02-15 18:09

如果使用的 jetty-server 作为开发环境,使用 2019.1 这个版本,最新发布的

2834511088

2019-02-15 18:13

@JFinal

多谢热心解答,也多谢你用宝贵的时间来给我解答疑问,等我解决了我会给个反馈的
@JFinal

JFinal

2019-02-15 18:19

@2834511088 你当前使用的 jfinal 已经很高了,强烈建议升级到最新版本

此外,要注意问你们公司的人是不是对 jfinal 的源码进行过修改:jfinal-java8-3.3-20171121.152419-1.jar 这个 jar 包看上去是你们改过的源码

如果你们自己改过源码,就不能简单升级,甚至不能使用 jfinal 官方版本

2834511088

2019-02-15 18:28

@JFinal
好的,我赶紧把这个问题给解决掉!jar包有点多,也可能有多余的jar包,我多实践下

JFinal

2019-02-15 18:32

@2834511088 如果多个项目依赖于同一个项目的不同版本,也可能出现多个 jar 包冲突的情况,注意在 pom.xml 中用 exclusion 标记排除掉

在 eclipse 中打开 pom.xml ,并打开底部的 Dependency Hierarchy 视图可以看到这类依赖

打出 war 包后,看 WEB-INF/lib 下面的 jar 包也可以找到这类重复 jar 包

2834511088

2019-02-16 12:11

最终,未排查出问题,没找出解决方案,终极解决方案是重新把线下的项目打包上线。

JFinal

2019-02-16 12:16

@2834511088 重新打包上线,问题解决了?

2834511088

2019-02-16 14:01

@JFinal
是的,原因找不到,费时费力,最后重新打包上线了一份(因为本地运行正常,服务器启动报错)

热门反馈

扫码入社