java - jersey error after obfuscating with proguard, tries to instantiate abstract class -


the class gsonmessagebodyhandler abstract class implements messagebodyreader<t>, , has no annotations. then, method subclassed class called jsonmessagebodyhandler. jsonmessagebodyhandler annotated @producer , @consumes(mediatype.application_json).

when deploy project unobfuscated, works fine. when obfuscate, though tell proguard not obfuscate gsonmessagebodyhandler , jsonmessagebodyhandler, jersey reason insists on attempting instantiate gsonmessagebodyhandler provider, , failing because abstract. cannot figure causing jersey attempt load abstract class if obfuscated. can help?

jersey version 1.17.

the relevant sections of startup logs given below:

2013-05-05 01:08:29.363 [localhost-startstop-1] error c.s.j.c.s.component.providerfactory - provider class, class com.rest.common.gsonmessagebodyhandler, not instantiated. processing continue class not utilized  java.lang.instantiationexception: null      @ sun.reflect.instantiationexceptionconstructoraccessorimpl.newinstance(instantiationexceptionconstructoraccessorimpl.java:30) ~[na:1.6.0_35]      @ java.lang.reflect.constructor.newinstance(constructor.java:513) ~[na:1.6.0_35]      @ java.lang.class.newinstance0(class.java:355) ~[na:1.6.0_35]      @ java.lang.class.newinstance(class.java:308) ~[na:1.6.0_35]      @ com.sun.jersey.core.spi.component.componentconstructor._getinstance(componentconstructor.java:192) ~[jersey-core-1.17.jar:1.17]      @ com.sun.jersey.core.spi.component.componentconstructor.getinstance(componentconstructor.java:179) ~[jersey-core-1.17.jar:1.17]      @ com.sun.jersey.core.spi.component.providerfactory.__getcomponentprovider(providerfactory.java:166) [jersey-core-1.17.jar:1.17]      @ com.sun.jersey.core.spi.component.providerfactory._getcomponentprovider(providerfactory.java:159) [jersey-core-1.17.jar:1.17]      @ com.sun.jersey.core.spi.component.providerfactory.getcomponentprovider(providerfactory.java:153) [jersey-core-1.17.jar:1.17]      @ com.sun.jersey.core.spi.component.providerservices.getcomponent(providerservices.java:251) [jersey-core-1.17.jar:1.17]      @ com.sun.jersey.core.spi.component.providerservices.getproviders(providerservices.java:148) [jersey-core-1.17.jar:1.17]      @ com.sun.jersey.core.spi.factory.messagebodyfactory.initwriters(messagebodyfactory.java:206) [jersey-core-1.17.jar:1.17]      @ com.sun.jersey.core.spi.factory.messagebodyfactory.init(messagebodyfactory.java:163) [jersey-core-1.17.jar:1.17]      @ com.sun.jersey.server.impl.application.webapplicationimpl._initiate(webapplicationimpl.java:1310) [jersey-server-1.17.jar:1.17]      @ com.sun.jersey.server.impl.application.webapplicationimpl.access$700(webapplicationimpl.java:168) [jersey-server-1.17.jar:1.17]      @ com.sun.jersey.server.impl.application.webapplicationimpl$13.f(webapplicationimpl.java:774) [jersey-server-1.17.jar:1.17]      @ com.sun.jersey.server.impl.application.webapplicationimpl$13.f(webapplicationimpl.java:770) [jersey-server-1.17.jar:1.17]      @ com.sun.jersey.spi.inject.errors.processwitherrors(errors.java:193) [jersey-core-1.17.jar:1.17]      @ com.sun.jersey.server.impl.application.webapplicationimpl.initiate(webapplicationimpl.java:770) [jersey-server-1.17.jar:1.17]      @ com.sun.jersey.server.impl.application.webapplicationimpl.initiate(webapplicationimpl.java:765) [jersey-server-1.17.jar:1.17]      @ com.sun.jersey.spi.container.servlet.servletcontainer.initiate(servletcontainer.java:489) [jersey-servlet-1.17.jar:1.17]      @ com.sun.jersey.spi.container.servlet.servletcontainer$internalwebcomponent.initiate(servletcontainer.java:319) [jersey-servlet-1.17.jar:1.17]      @ com.sun.jersey.spi.container.servlet.webcomponent.load(webcomponent.java:605) [jersey-servlet-1.17.jar:1.17]      @ com.sun.jersey.spi.container.servlet.webcomponent.init(webcomponent.java:210) [jersey-servlet-1.17.jar:1.17]      @ com.sun.jersey.spi.container.servlet.servletcontainer.init(servletcontainer.java:374) [jersey-servlet-1.17.jar:1.17]      @ com.sun.jersey.spi.container.servlet.servletcontainer.init(servletcontainer.java:557) [jersey-servlet-1.17.jar:1.17]      @ javax.servlet.genericservlet.init(genericservlet.java:160) [servlet-api.jar:3.0.fr]      @ org.apache.catalina.core.standardwrapper.initservlet(standardwrapper.java:1266) [catalina.jar:7.0.32]      @ org.apache.catalina.core.standardwrapper.loadservlet(standardwrapper.java:1185) [catalina.jar:7.0.32]      @ org.apache.catalina.core.standardwrapper.load(standardwrapper.java:1080) [catalina.jar:7.0.32]      @ org.apache.catalina.core.standardcontext.loadonstartup(standardcontext.java:5027) [catalina.jar:7.0.32]      @ org.apache.catalina.core.standardcontext.startinternal(standardcontext.java:5314) [catalina.jar:7.0.32]      @ org.apache.catalina.util.lifecyclebase.start(lifecyclebase.java:150) [catalina.jar:7.0.32]      @ org.apache.catalina.core.containerbase.addchildinternal(containerbase.java:901) [catalina.jar:7.0.32]      @ org.apache.catalina.core.containerbase.addchild(containerbase.java:877) [catalina.jar:7.0.32]      @ org.apache.catalina.core.standardhost.addchild(standardhost.java:633) [catalina.jar:7.0.32]      @ org.apache.catalina.startup.hostconfig.deploydescriptor(hostconfig.java:655) [catalina.jar:7.0.32]      @ org.apache.catalina.startup.hostconfig$deploydescriptor.run(hostconfig.java:1628) [catalina.jar:7.0.32]      @ java.util.concurrent.executors$runnableadapter.call(executors.java:441) [na:1.6.0_35]      @ java.util.concurrent.futuretask$sync.innerrun(futuretask.java:303) [na:1.6.0_35]      @ java.util.concurrent.futuretask.run(futuretask.java:138) [na:1.6.0_35]      @ java.util.concurrent.threadpoolexecutor$worker.runtask(threadpoolexecutor.java:886) [na:1.6.0_35]      @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:908) [na:1.6.0_35]      @ java.lang.thread.run(thread.java:662) [na:1.6.0_35]    severe: class com.rest.common.gsonmessagebodyhandler abstract class , cannot instantiated.  2013-05-05 01:08:29.675 [localhost-startstop-1] error o.a.c.c.c.[.[localhost].[/rest] - standardwrapper.throwable com.sun.jersey.spi.inject.errors$errormessagesexception: null      @ com.sun.jersey.spi.inject.errors.processerrormessages(errors.java:170) ~[jersey-core-1.17.jar:1.17]      @ com.sun.jersey.spi.inject.errors.postprocess(errors.java:136) ~[jersey-core-1.17.jar:1.17]      @ com.sun.jersey.spi.inject.errors.processwitherrors(errors.java:199) ~[jersey-core-1.17.jar:1.17]      @ com.sun.jersey.server.impl.application.webapplicationimpl.initiate(webapplicationimpl.java:770) ~[jersey-server-1.17.jar:1.17]      @ com.sun.jersey.server.impl.application.webapplicationimpl.initiate(webapplicationimpl.java:765) ~[jersey-server-1.17.jar:1.17]      @ com.sun.jersey.spi.container.servlet.servletcontainer.initiate(servletcontainer.java:489) ~[jersey-servlet-1.17.jar:1.17]      @ com.sun.jersey.spi.container.servlet.servletcontainer$internalwebcomponent.initiate(servletcontainer.java:319) ~[jersey-servlet-1.17.jar:1.17]      @ com.sun.jersey.spi.container.servlet.webcomponent.load(webcomponent.java:605) ~[jersey-servlet-1.17.jar:1.17]      @ com.sun.jersey.spi.container.servlet.webcomponent.init(webcomponent.java:210) ~[jersey-servlet-1.17.jar:1.17]      @ com.sun.jersey.spi.container.servlet.servletcontainer.init(servletcontainer.java:374) ~[jersey-servlet-1.17.jar:1.17]      @ com.sun.jersey.spi.container.servlet.servletcontainer.init(servletcontainer.java:557) ~[jersey-servlet-1.17.jar:1.17]      @ javax.servlet.genericservlet.init(genericservlet.java:160) ~[servlet-api.jar:3.0.fr]      @ org.apache.catalina.core.standardwrapper.initservlet(standardwrapper.java:1266) [catalina.jar:7.0.32]      @ org.apache.catalina.core.standardwrapper.loadservlet(standardwrapper.java:1185) [catalina.jar:7.0.32]      @ org.apache.catalina.core.standardwrapper.load(standardwrapper.java:1080) [catalina.jar:7.0.32]      @ org.apache.catalina.core.standardcontext.loadonstartup(standardcontext.java:5027) [catalina.jar:7.0.32]      @ org.apache.catalina.core.standardcontext.startinternal(standardcontext.java:5314) [catalina.jar:7.0.32]      @ org.apache.catalina.util.lifecyclebase.start(lifecyclebase.java:150) [catalina.jar:7.0.32]      @ org.apache.catalina.core.containerbase.addchildinternal(containerbase.java:901) [catalina.jar:7.0.32]      @ org.apache.catalina.core.containerbase.addchild(containerbase.java:877) [catalina.jar:7.0.32]      @ org.apache.catalina.core.standardhost.addchild(standardhost.java:633) [catalina.jar:7.0.32]      @ org.apache.catalina.startup.hostconfig.deploydescriptor(hostconfig.java:655) [catalina.jar:7.0.32]      @ org.apache.catalina.startup.hostconfig$deploydescriptor.run(hostconfig.java:1628) [catalina.jar:7.0.32]      @ java.util.concurrent.executors$runnableadapter.call(executors.java:441) [na:1.6.0_35]      @ java.util.concurrent.futuretask$sync.innerrun(futuretask.java:303) [na:1.6.0_35]      @ java.util.concurrent.futuretask.run(futuretask.java:138) [na:1.6.0_35]      @ java.util.concurrent.threadpoolexecutor$worker.runtask(threadpoolexecutor.java:886) [na:1.6.0_35]      @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:908) [na:1.6.0_35]      @ java.lang.thread.run(thread.java:662) [na:1.6.0_35]  2013-05-05 01:08:29.691 [localhost-startstop-1] error o.a.c.c.c.[.[localhost].[/rest] - servlet /rest threw load() exception  com.sun.jersey.spi.inject.errors$errormessagesexception: null      @ com.sun.jersey.spi.inject.errors.processerrormessages(errors.java:170) ~[jersey-core-1.17.jar:1.17]      @ com.sun.jersey.spi.inject.errors.postprocess(errors.java:136) ~[jersey-core-1.17.jar:1.17]      @ com.sun.jersey.spi.inject.errors.processwitherrors(errors.java:199) ~[jersey-core-1.17.jar:1.17]      @ com.sun.jersey.server.impl.application.webapplicationimpl.initiate(webapplicationimpl.java:770) ~[jersey-server-1.17.jar:1.17]      @ com.sun.jersey.server.impl.application.webapplicationimpl.initiate(webapplicationimpl.java:765) ~[jersey-server-1.17.jar:1.17]      @ com.sun.jersey.spi.container.servlet.servletcontainer.initiate(servletcontainer.java:489) ~[jersey-servlet-1.17.jar:1.17]      @ com.sun.jersey.spi.container.servlet.servletcontainer$internalwebcomponent.initiate(servletcontainer.java:319) ~[jersey-servlet-1.17.jar:1.17]      @ com.sun.jersey.spi.container.servlet.webcomponent.load(webcomponent.java:605) ~[jersey-servlet-1.17.jar:1.17]      @ com.sun.jersey.spi.container.servlet.webcomponent.init(webcomponent.java:210) ~[jersey-servlet-1.17.jar:1.17]      @ com.sun.jersey.spi.container.servlet.servletcontainer.init(servletcontainer.java:374) ~[jersey-servlet-1.17.jar:1.17]      @ com.sun.jersey.spi.container.servlet.servletcontainer.init(servletcontainer.java:557) ~[jersey-servlet-1.17.jar:1.17]      @ javax.servlet.genericservlet.init(genericservlet.java:160) ~[servlet-api.jar:3.0.fr]      @ org.apache.catalina.core.standardwrapper.initservlet(standardwrapper.java:1266) ~[catalina.jar:7.0.32]      @ org.apache.catalina.core.standardwrapper.loadservlet(standardwrapper.java:1185) ~[catalina.jar:7.0.32]      @ org.apache.catalina.core.standardwrapper.load(standardwrapper.java:1080) ~[catalina.jar:7.0.32]      @ org.apache.catalina.core.standardcontext.loadonstartup(standardcontext.java:5027) [catalina.jar:7.0.32]      @ org.apache.catalina.core.standardcontext.startinternal(standardcontext.java:5314) [catalina.jar:7.0.32]      @ org.apache.catalina.util.lifecyclebase.start(lifecyclebase.java:150) [catalina.jar:7.0.32]      @ org.apache.catalina.core.containerbase.addchildinternal(containerbase.java:901) [catalina.jar:7.0.32]      @ org.apache.catalina.core.containerbase.addchild(containerbase.java:877) [catalina.jar:7.0.32]      @ org.apache.catalina.core.standardhost.addchild(standardhost.java:633) [catalina.jar:7.0.32]      @ org.apache.catalina.startup.hostconfig.deploydescriptor(hostconfig.java:655) [catalina.jar:7.0.32]      @ org.apache.catalina.startup.hostconfig$deploydescriptor.run(hostconfig.java:1628) [catalina.jar:7.0.32]      @ java.util.concurrent.executors$runnableadapter.call(executors.java:441) [na:1.6.0_35]      @ java.util.concurrent.futuretask$sync.innerrun(futuretask.java:303) [na:1.6.0_35]      @ java.util.concurrent.futuretask.run(futuretask.java:138) [na:1.6.0_35]      @ java.util.concurrent.threadpoolexecutor$worker.runtask(threadpoolexecutor.java:886) [na:1.6.0_35]      @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:908) [na:1.6.0_35]      @ java.lang.thread.run(thread.java:662) [na:1.6.0_35] 

maybe you're not preserving annotations yet:

-keepattributes *annotation* 

Comments