Jersey错误JAXBStringReaderProviders $ RootElementProvider

17-53-2014 12:53:31.817 INFO – 将com.citronium.fizionomizm.service.server.controllers.Root注册为根资源类17-53-2014 12:53:31.820 INFO – 注册com.citronium.fizionomizm。 service.server.controllers.RecognizePath as root resource class 17-53-2014 12:53:31.822 INFO – 启动Jersey应用程序,版本’Jersey:1.18 11/22/2013 03:05 AM’17-53-2014 12: 53:31.929错误 – 无法实例化提供程序类com.sun.jersey.server.impl.model.parameter.multivalued.JAXBStringReaderProviders $ RootElementProvider。 处理将继续,但不会使用该类java.lang.IllegalArgumentException:参数类型不匹配sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)〜[na:1.7.0_51] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl。 java:57)〜[na:1.7.0_51] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)〜[na:1.7.0_51] at java.lang.reflect.Constructor.newInstance(Constructor.java: 526)〜[na:1.7.0_51] at com.sun.jersey.core.spi.component.ComponentConstructor。 getInstance(ComponentConstructor.java:210)~ [fizionomizm-service.jar:0.1] at com.sun.jersey.core.spi.component.ComponentConstructor.getInstance(ComponentConstructor.java:180)~ [fizionomizm-service.jar:0.1 ]在com.sun.jersey.core.spi.component.ProviderFactory。 _getComponentProvider(ProviderFactory.java:166)[fizionomizm-service.jar:0.1] at com.sun.jersey.core.spi.component.ProviderFactory.getComponentProvider(ProviderFactory.java:137)[fizionomizm-service.jar:0.1] at com.sun.jersey.core.spi.component.ProviderServices.getComponent(ProviderServices.java:283)[fizionomizm-service.jar:0.1] at com.sun.jersey.core.spi.component.ProviderServices.getProvidersAndServices(ProviderServices。 java:176)[fizionomizm-service.jar:0.1] at com.sun.jersey.server.impl.model.parameter.multivalued.StringReaderFactory.init(StringReaderFactory.java:60)[fizionomizm-service.jar:0.1] at at com.sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.java:1341)[fizionomizm-service.jar:0.1] at com.sun.jersey.server.impl.application.WebApplicationImpl.access $ 700(WebApplicationImpl .java:180)[fizionomizm-service.jar:0.1] at com.sun.jersey.server.impl.application.WebApplicationImpl $ 13.f(WebApplicationImpl.java:799)[fizionomizm-service.jar:0.1] at c om.sun.jersey.server.impl.application.WebApplicationImpl $ 13.f(WebApplicationImpl.java:795)[fizionomizm-service.jar:0.1] at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java) :[193] [fizionomizm-service.jar:0.1] com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:795)[fizionomizm-service.jar:0.1] at com.sun.jersey .guice.spi.container.servlet.GuiceContainer.initiate(GuiceContainer.java:121)[fizionomizm-service.jar:0.1] at com.sun.jersey.spi.container.servlet.ServletContainer $ InternalWebComponent.initiate(ServletContainer.java :321)[fizionomizm-service.jar:0.1] at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:605)[fizionomizm-service.jar:0.1] at com.sun.jersey .spi.container.servlet.WebComponent.init(WebComponent.java:207)[fizionomizm-service.jar:0.1] at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:376)[ fizionomizm-service.jar:0.1] at com.sun.jersey.spi.container.servlet .ServletContainer.init(ServletContainer.java:559)[fizionomizm-service.jar:0.1] at com.google.inject的javax.servlet.GenericServlet.init(GenericServlet.java:244)[fizionomizm-service.jar:0.1] .servlet.ServletDefinition.init(ServletDefinition.java:119)[fizionomizm-service.jar:0.1] at com.google.inject.servlet.ManagedServletPipeline.init(ManagedServletPipeline.java:84)[fizionomizm-service.jar:0.1]在com.google.inject.servlet.ManagedFilterPipeline.initPipeline(ManagedFilterPipeline.java:104)[fizionomizm-service.jar:0.1] com.google.inject.servlet.GuiceFilter.init(GuiceFilter.java:224)[fizionomizm- service.jar:0.1] atg.eclipse.jetty.servlet.FilterHolder.initialize(FilterHolder.java:137)[fizionomizm-service.jar:0.1] at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java :810)在org.eclipse.jetty.server.handl的org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:288)[fizionomizm-service.jar:0.1]的[fizionomizm-service.jar:0.1] er.ContextHandler.doStart(ContextHandler.java:743)[fizionomizm-service.jar:0.1] at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)[fizionomizm-service.jar:0.1 ] org.eclipse.jetty.uart.start.ContainerLifeCycle.start(ContainerLifeCycle.java:117)[fizionomizm-service.jar:0.1] org.eclipse.jetty.server.Server.start(Server.java:355) [fizionomizm-service.jar:0.1]在org.eclipse.jetty.doStart上的org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:99)[fizionomizm-service.jar:0.1]。 AbstractHandler.doStart(AbstractHandler.java:60)[fizionomizm-service.jar:0.1] org.eclipse.jetty.server.Server.doStart(Server.java:324)[fizionomizm-service.jar:0.1] at org。 eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)[fizionomizm-service.jar:0.1] at com.citronium.fizionomizm.service.server.restserver.RESTServer.start(RESTServer.java:68) [fizionomizm-service.jar:0.1] at com.citronium.fizionomizm。 service.Runner.main(Runner.java:19)[fizionomizm-service.jar:0.1] 17-53-2014 12:53:32.235 INFO – 将com.citronium.fizionomizm.service.server.controllers.Root绑定到GuiceManagedComponentProvider with范围“Singleton”17-53-2014 12:53:32.249 INFO – 将com.citronium.fizionomizm.service.server.controllers.RecognizePath绑定到GuiceManagedComponentProvider,范围为“Singleton”17-53-2014 12:53:32.365 ERROR – 使用资源和/或提供程序类检测到以下错误和警告:SEVERE:缺少构造函数public com.sun.jersey.server.impl.model.parameter.multivalued.JAXBStringReaderProviders $ RootElementProvider(com.sun.jersey。 spi.inject.Injectable,javax.ws.rs.ext.Providers)at parameter index 0 SEVERE:Method,public javax.ws.rs.core.Response com.citronium.fizionomizm.service.server.controllers.RecognizePath.upload( java.lang.String,java.lang.String)抛出java.io.IOException,使用资源的POST注释,类com.citronium.fizionomizm。 service.server.controllers.RecognizePath,不被识别为有效的资源方法。 SEVERE:方法,公共javax.ws.rs.core.Response com.citronium.fizionomizm.service.server.controllers.RecognizePath.analyse(java.lang.String,java.lang.String),注释资源的PUT,类com.citronium.fizionomizm.service.server.controllers.RecognizePath,不被识别为有效的资源方法。 SEVERE:方法,公共同步javax.ws.rs.core.Response com.sun.jersey.server.impl.wadl.WadlResource.geExternalGramar(javax.ws.rs.core.UriInfo,java.lang.String),带注释资源的GET,类com.sun.jersey.server.impl.wadl.WadlResource,不被识别为有效的资源方法。 SEVERE:方法,公共同步javax.ws.rs.core.Response com.sun.jersey.server.impl.wadl.WadlResource.getWadl(javax.ws.rs.core.Request,javax.ws.rs.core.UriInfo ,javax.ws.rs.ext.Providers),使用资源的GET注释,类com.sun.jersey.server.impl.wadl.WadlResource,不被识别为有效的资源方法。 17-53-2014 12:53:32.375 ERROR – 启动服务器时出错。 Com.sun.jersey.spersey.spi.inject.Erject $ comMun.jersey.spi.inject.ErError.processErrorMessages(Errors.java:170)com.sun.jersey.sp. .java:136)com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:199)at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:795)at Com.sun.jersey.guice.spi.container.servlet.GuiceContainer.initiate(GuiceContainer.java:121)at com.sun.jersey.spi.container.servlet.ServletContainer $ InternalWebComponent.initiate(ServletContainer.java:321)at at Com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:605)位于com.sun的com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:207)。位于javax.servlet.GenericServlet.init的com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:559)中的jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:376) GenericServlet.java:244)在com.google.inject.ser上 vlet.ServletDefinition.init(ServletDefinition.java:119)位于com.google.inject.servlet.ManagedServilePipeline.init(ManagedServletPipeline.java:84)的com.google.inject.servlet.ManagedFilterPipeline.initPipeline(ManagedFilterPipeline.java:104)在com.google.inject.servlet.GuiceFilter.init(GuiceFilter.java:224)org.eclipse.jetty.servit.FitterHolder.initialize(FilterHolder.java:137)org.eclipse.jetty.servlet.ServletHandler.initialize (ServletHandler.java:810)org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:288)org.eclipse.jetty.server.hand.ContextHandler.doStart(ContextHandler.java:743)org。 eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)位于org.eclipse.jetty.server.Server的org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:117)。在org.eclipse.jetty.server.h的org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:99)启动(Server.java:355) andler.AbstractHandler.doStart(AbstractHandler.java:60)org.eclipse.jetty.Server.doStart(Server.java:324)org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java: 69)at com.citronium.fizionomizm.service.server.restserver.RESTServer.start(RESTServer.java:68)at com.citronium.fizionomizm.service.Runner.main(Runner.java:19)

从控制台启动jar时此exception丢失。 如果从ide开始,工作正常。

我意识到这是旧的,但也许其他人会觉得它很有用。

就我而言,这是由来自不同Jersey模块的一些冲突的服务条目引起的。 META-INF/services/的文件应该合并,但我的文件被覆盖了。

如果使用maven shade插件,则可以使用ServicesResourceTransformer轻松合并服务条目。