0%

resteasy fastjson版本冲突问题

零、相关介绍

关键错误信息:
Java.lang.RuntimeException: RESTeasy Provider Factory is null, do you have the ResteasyBootstrap listener configured?
Java.lang.RuntimeException: Illegal to inject a message body into a singleton into public com.alibaba.fastjson.support.jaxrs.FastJsonProvider(Java.lang.String)

resteasy:JBoss的一个开源项目,提供一套完整的框架帮助开发人员构建RESTful Web Service和RESTful Java应用程序。
fastjson:由阿里开发的一个性能很好的Java JSON 解析器和生成器。

引起错误的依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.58</version><!--改为:1.1.34.sec01相安无事-->
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>2.2.1.GA</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>jaxrs-api</artifactId>
<version>2.2.1.GA</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-spring</artifactId>
<version>2.2.1.GA</version>
</dependency>

一、错误日志

本地启动Server报错

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
2019-08-03 11:51:22,491 ERROR - [RMI TCP Connection(2)-127.0.0.1] - Context initialization failed
Java.lang.RuntimeException: RESTeasy Provider Factory is null, do you have the ResteasyBootstrap listener configured?
at org.jboss.resteasy.plugins.spring.SpringContextLoaderSupport.customizeContext(SpringContextLoaderSupport.Java:53)
at org.jboss.resteasy.plugins.spring.SpringContextLoader.customizeContext(SpringContextLoader.Java:30)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.Java:382)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.Java:283)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.Java:112)
at org.jboss.resteasy.plugins.spring.SpringContextLoaderListener.contextInitialized(SpringContextLoaderListener.Java:44)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.Java:5197)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.Java:5720)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:145)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.Java:1018)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.Java:994)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.Java:662)
at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.Java:1899)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
at Java.lang.reflect.Method.invoke(Method.Java:606)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.Java:301)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.Java:819)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.Java:801)
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.Java:619)
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.Java:566)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
at Java.lang.reflect.Method.invoke(Method.Java:606)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.Java:301)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.Java:819)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.Java:801)
at com.sun.jmx.remote.security.MBeanServerAccessController.invoke(MBeanServerAccessController.Java:468)
at Javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.Java:1487)
at Javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.Java:97)
at Javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.Java:1328)
at Java.security.AccessController.doPrivileged(Native Method)
at Javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.Java:1427)
at Javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.Java:848)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
at Java.lang.reflect.Method.invoke(Method.Java:606)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.Java:322)
at sun.rmi.transport.Transport$2.run(Transport.Java:202)
at sun.rmi.transport.Transport$2.run(Transport.Java:199)
at Java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.Java:198)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.Java:567)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.Java:828)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.access$400(TCPTransport.Java:619)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$1.run(TCPTransport.Java:684)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$1.run(TCPTransport.Java:681)
at Java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.Java:681)
at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1145)
at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:615)
at Java.lang.Thread.run(Thread.Java:745)

tomcat localhost long

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
八月 03, 2019 11:51:22 上午 org.apache.catalina.core.ApplicationContext log
信息: No Spring WebApplicationInitializer types detected on classpath
八月 03, 2019 11:51:22 上午 org.apache.catalina.core.StandardContext listenerStart
严重: Exception sending context initialized event to listener instance of class org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
Java.lang.RuntimeException: Java.lang.RuntimeException: Unable to instantiate MessageBodyReader
at org.jboss.resteasy.plugins.providers.RegisterBuiltin.register(RegisterBuiltin.Java:35)
at org.jboss.resteasy.spi.ResteasyDeployment.start(ResteasyDeployment.Java:211)
at org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap.contextInitialized(ResteasyBootstrap.Java:28)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.Java:5197)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.Java:5720)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:145)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.Java:1018)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.Java:994)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.Java:662)
at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.Java:1899)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
at Java.lang.reflect.Method.invoke(Method.Java:606)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.Java:301)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.Java:819)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.Java:801)
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.Java:619)
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.Java:566)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
at Java.lang.reflect.Method.invoke(Method.Java:606)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.Java:301)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.Java:819)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.Java:801)
at com.sun.jmx.remote.security.MBeanServerAccessController.invoke(MBeanServerAccessController.Java:468)
at Javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.Java:1487)
at Javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.Java:97)
at Javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.Java:1328)
at Java.security.AccessController.doPrivileged(Native Method)
at Javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.Java:1427)
at Javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.Java:848)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
at Java.lang.reflect.Method.invoke(Method.Java:606)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.Java:322)
at sun.rmi.transport.Transport$2.run(Transport.Java:202)
at sun.rmi.transport.Transport$2.run(Transport.Java:199)
at Java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.Java:198)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.Java:567)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.Java:828)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.access$400(TCPTransport.Java:619)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$1.run(TCPTransport.Java:684)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$1.run(TCPTransport.Java:681)
at Java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.Java:681)
at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1145)
at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:615)
at Java.lang.Thread.run(Thread.Java:745)
Caused by: Java.lang.RuntimeException: Unable to instantiate MessageBodyReader
at org.jboss.resteasy.spi.ResteasyProviderFactory.registerProvider(ResteasyProviderFactory.Java:760)
at org.jboss.resteasy.plugins.providers.RegisterBuiltin.registerProviders(RegisterBuiltin.Java:70)
at org.jboss.resteasy.plugins.providers.RegisterBuiltin.register(RegisterBuiltin.Java:31)
... 51 more
Caused by: Java.lang.RuntimeException: Illegal to inject a message body into a singleton into public com.alibaba.fastjson.support.jaxrs.FastJsonProvider(Java.lang.String)
at org.jboss.resteasy.core.MessageBodyParameterInjector.inject(MessageBodyParameterInjector.Java:209)
at org.jboss.resteasy.core.ConstructorInjectorImpl.injectableArguments(ConstructorInjectorImpl.Java:63)
at org.jboss.resteasy.core.ConstructorInjectorImpl.construct(ConstructorInjectorImpl.Java:129)
at org.jboss.resteasy.spi.ResteasyProviderFactory.getProviderInstance(ResteasyProviderFactory.Java:1038)
at org.jboss.resteasy.spi.ResteasyProviderFactory.addMessageBodyReader(ResteasyProviderFactory.Java:478)
at org.jboss.resteasy.spi.ResteasyProviderFactory.registerProvider(ResteasyProviderFactory.Java:756)
... 53 more

八月 03, 2019 11:51:22 上午 org.apache.catalina.core.ApplicationContext log
信息: Initializing Spring root WebApplicationContext
八月 03, 2019 11:51:22 上午 org.apache.catalina.core.StandardContext listenerStart
严重: Exception sending context initialized event to listener instance of class org.jboss.resteasy.plugins.spring.SpringContextLoaderListener
Java.lang.RuntimeException: RESTeasy Provider Factory is null, do you have the ResteasyBootstrap listener configured?
at org.jboss.resteasy.plugins.spring.SpringContextLoaderSupport.customizeContext(SpringContextLoaderSupport.Java:53)
at org.jboss.resteasy.plugins.spring.SpringContextLoader.customizeContext(SpringContextLoader.Java:30)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.Java:382)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.Java:283)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.Java:112)
at org.jboss.resteasy.plugins.spring.SpringContextLoaderListener.contextInitialized(SpringContextLoaderListener.Java:44)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.Java:5197)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.Java:5720)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:145)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.Java:1018)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.Java:994)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.Java:662)
at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.Java:1899)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
at Java.lang.reflect.Method.invoke(Method.Java:606)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.Java:301)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.Java:819)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.Java:801)
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.Java:619)
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.Java:566)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
at Java.lang.reflect.Method.invoke(Method.Java:606)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.Java:301)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.Java:819)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.Java:801)
at com.sun.jmx.remote.security.MBeanServerAccessController.invoke(MBeanServerAccessController.Java:468)
at Javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.Java:1487)
at Javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.Java:97)
at Javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.Java:1328)
at Java.security.AccessController.doPrivileged(Native Method)
at Javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.Java:1427)
at Javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.Java:848)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
at Java.lang.reflect.Method.invoke(Method.Java:606)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.Java:322)
at sun.rmi.transport.Transport$2.run(Transport.Java:202)
at sun.rmi.transport.Transport$2.run(Transport.Java:199)
at Java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.Java:198)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.Java:567)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.Java:828)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.access$400(TCPTransport.Java:619)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$1.run(TCPTransport.Java:684)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$1.run(TCPTransport.Java:681)
at Java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.Java:681)
at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1145)
at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:615)
at Java.lang.Thread.run(Thread.Java:745)

三、解决办法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.34.sec01</version><!--改为:1.1.34.sec01相安无事-->
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>2.2.1.GA</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>jaxrs-api</artifactId>
<version>2.2.1.GA</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-spring</artifactId>
<version>2.2.1.GA</version>
</dependency>

四、细节说明

暂时不知道引起的原因,后期补充