title: Liferay 7.1 custom portlet using CXF JAX-RS
body: <p>I'm getting the following error when my bundle is trying to start:</p>
  
  <pre><code>The activate method has thrown an exception
  java.lang.NoClassDefFoundError: Could not initialize class javax.ws.rs.core.EntityTag
  </code></pre>
  
  <p>That happens when I tried to deploy an OSGi module.</p>
  
  <p>I'm using:</p>
  
  <ul>
  <li>Liferay 7.1.2-ga3</li>
  <li>"org.apache.cxf:cxf-rt-rs-client:3.2.5"</li>
  <li>"javax.ws.rs:javax.ws.rs-api:2.1"</li>
  </ul>
  
  <p><strong>EDIT 1</strong>
  Full stacktrace</p>
  
  <pre><code>java.lang.ExceptionInInitializerError
  at java.lang.Class.forName0(Native Method)
  at java.lang.Class.forName(Class.java:348)
  at org.apache.cxf.common.util.ProxyHelper.canSeeAllInterfaces(ProxyHelper.java:112)
  at org.apache.cxf.common.util.ProxyHelper.getClassLoaderForInterfaces(ProxyHelper.java:61)
  at org.apache.cxf.common.util.ProxyHelper.getProxyInternal(ProxyHelper.java:48)
  at org.apache.cxf.common.util.ProxyHelper.getProxy(ProxyHelper.java:126)
  at org.apache.cxf.jaxrs.client.JAXRSClientFactoryBean.createWithValues(JAXRSClientFactoryBean.java:323)
  at org.apache.cxf.jaxrs.client.JAXRSClientFactoryBean.create(JAXRSClientFactoryBean.java:264)
  at org.apache.cxf.jaxrs.client.JAXRSClientFactory.create(JAXRSClientFactory.java:172)
  at org.apache.cxf.jaxrs.client.JAXRSClientFactory.create(JAXRSClientFactory.java:126)
  at com.mycompany.myservice.service.impl.MyServiceImpl.activate(MyServiceImpl.java:161)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:498)
  at org.apache.felix.scr.impl.inject.methods.BaseMethod.invokeMethod(BaseMethod.java:228)
  at org.apache.felix.scr.impl.inject.methods.BaseMethod.access$500(BaseMethod.java:41)
  at org.apache.felix.scr.impl.inject.methods.BaseMethod$Resolved.invoke(BaseMethod.java:664)
  at org.apache.felix.scr.impl.inject.methods.BaseMethod.invoke(BaseMethod.java:510)
  at org.apache.felix.scr.impl.inject.methods.ActivateMethod.invoke(ActivateMethod.java:317)
  at org.apache.felix.scr.impl.inject.methods.ActivateMethod.invoke(ActivateMethod.java:307)
  at org.apache.felix.scr.impl.manager.SingleComponentManager.createImplementationObject(SingleComponentManager.java:341)
  at org.apache.felix.scr.impl.manager.SingleComponentManager.createComponent(SingleComponentManager.java:114)
  at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:983)
  at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:956)
  at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:901)
  at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse$1.run(ServiceFactoryUse.java:212)
  at java.security.AccessController.doPrivileged(Native Method)
  at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:210)
  at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.getService(ServiceFactoryUse.java:111)
  at org.eclipse.osgi.internal.serviceregistry.ServiceConsumer$2.getService(ServiceConsumer.java:45)
  at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:524)
  at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:464)
  at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:624)
  at org.apache.felix.scr.impl.manager.SingleRefPair.getServiceObject(SingleRefPair.java:73)
  at org.apache.felix.scr.impl.inject.BindParameters.getServiceObject(BindParameters.java:47)
  at org.apache.felix.scr.impl.inject.field.FieldHandler$ReferenceMethodImpl.getServiceObject(FieldHandler.java:519)
  at org.apache.felix.scr.impl.manager.DependencyManager.getServiceObject(DependencyManager.java:2308)
  at org.apache.felix.scr.impl.manager.DependencyManager$SingleStaticCustomizer.prebind(DependencyManager.java:1162)
  at org.apache.felix.scr.impl.manager.DependencyManager.prebind(DependencyManager.java:1576)
  at org.apache.felix.scr.impl.manager.AbstractComponentManager.collectDependencies(AbstractComponentManager.java:1029)
  at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:936)
  at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:756)
  at org.apache.felix.scr.impl.manager.DependencyManager$SingleStaticCustomizer.addedService(DependencyManager.java:1053)
  at org.apache.felix.scr.impl.manager.DependencyManager$SingleStaticCustomizer.addedService(DependencyManager.java:1007)
  at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1216)
  at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1137)
  at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.trackAdding(ServiceTracker.java:944)
  at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.track(ServiceTracker.java:880)
  at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:1168)
  at org.apache.felix.scr.impl.BundleComponentActivator$ListenerInfo.serviceChanged(BundleComponentActivator.java:125)
  at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:109)
  at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:891)
  at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:804)
  at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:127)
  at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:228)
  at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:469)
  at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:906)
  at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:892)
  at org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:128)
  at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:959)
  at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:732)
  at org.apache.felix.scr.impl.manager.DependencyManager$SingleStaticCustomizer.addedService(DependencyManager.java:1053)
  at org.apache.felix.scr.impl.manager.DependencyManager$SingleStaticCustomizer.addedService(DependencyManager.java:1007)
  at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1216)
  at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1137)
  at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.trackAdding(ServiceTracker.java:944)
  at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.track(ServiceTracker.java:880)
  at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:1168)
  at org.apache.felix.scr.impl.BundleComponentActivator$ListenerInfo.serviceChanged(BundleComponentActivator.java:125)
  at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:109)
  at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:891)
  at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:804)
  at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:127)
  at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:228)
  at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:469)
  at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:906)
  at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:892)
  at org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:128)
  at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:959)
  at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:732)
  at org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:666)
  at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:432)
  at org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:665)
  at org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:339)
  at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:381)
  at org.apache.felix.scr.impl.Activator.access$200(Activator.java:49)
  at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:263)
  at org.apache.felix.scr.impl.AbstractExtender.createExtension(AbstractExtender.java:196)
  at org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:169)
  at org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:49)
  at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:488)
  at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:1)
  at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:232)
  at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:450)
  at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:908)
  at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
  at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
  at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:230)
  at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:137)
  at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:129)
  at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:191)
  at org.eclipse.osgi.container.Module.publishEvent(Module.java:476)
  at org.eclipse.osgi.container.Module.start(Module.java:467)
  at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1682)
  at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1662)
  at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1624)
  at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1555)
  at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1)
  at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
  at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException
  at javax.ws.rs.ext.RuntimeDelegate.findDelegate(RuntimeDelegate.java:64)
  at javax.ws.rs.ext.RuntimeDelegate.getInstance(RuntimeDelegate.java:48)
  at javax.ws.rs.core.EntityTag.&lt;clinit&gt;(EntityTag.java:28)
  ... 111 more 
  Caused by: java.lang.ClassNotFoundException
  at javax.ws.rs.ext.RuntimeDelegateFinder.newInstance(RuntimeDelegateFinder.java:118)
  at javax.ws.rs.ext.RuntimeDelegateFinder.find(RuntimeDelegateFinder.java:94)
  at javax.ws.rs.ext.RuntimeDelegate.findDelegate(RuntimeDelegate.java:58)
  ... 113 more 
  Caused by: java.lang.InstantiationException
  at sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(InstantiationExceptionConstructorAccessorImpl.java:48)
  at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
  at java.lang.Class.newInstance(Class.java:442)
  at javax.ws.rs.ext.RuntimeDelegateFinder.newInstance(RuntimeDelegateFinder.java:114)
  </code></pre>
  
  <p>Note that JAX RS RuntimeDelegate's default implementation is <strong>org.apache.cxf.jaxrs.impl.RuntimeDelegateImpl</strong> </p>
  
  <p><strong>EDIT 2</strong></p>
  
  <pre><code>WARN  [main][AriesJaxrsServiceRuntime:246] Extension CachingServiceReference {_cachedProperties={osgi.jaxrs.application.select=(osgi.jaxrs.name=Liferay.OAuth2.Application), service.id=3972, objectClass=[javax.ws.rs.ext.MessageBodyWriter], osgi.jaxrs.name=OAuthAuthorizationDataMessageBodyWriter, osgi.jaxrs.extension.select=null (cached), service.ranking=null (cached), osgi.jaxrs.whiteboard.target=null (cached)}_serviceReference={javax.ws.rs.ext.MessageBodyWriter}={service.id=3972, osgi.jaxrs.extension=true, service.bundleid=660, service.scope=bundle, osgi.jaxrs.application.select=(osgi.jaxrs.name=Liferay.OAuth2.Application), osgi.jaxrs.name=OAuthAuthorizationDataMessageBodyWriter, component.name=com.liferay.oauth2.provider.rest.internal.endpoint.authorize.OAuthAuthorizationDataMessageBodyWriter, component.id=2290}_} is registered with error [Sanitized]
  ERROR [main][Whiteboard:80] ServiceReference CachingServiceReference {_cachedProperties={osgi.jaxrs.application.select=(osgi.jaxrs.name=Liferay.OAuth2.Application), service.id=3972, objectClass=[javax.ws.rs.ext.MessageBodyWriter], osgi.jaxrs.name=OAuthAuthorizationDataMessageBodyWriter, osgi.jaxrs.extension.select=null (cached), service.ranking=null (cached), osgi.jaxrs.whiteboard.target=null (cached)}_serviceReference={javax.ws.rs.ext.MessageBodyWriter}={service.id=3972, osgi.jaxrs.extension=true, service.bundleid=660, service.scope=bundle, osgi.jaxrs.application.select=(osgi.jaxrs.name=Liferay.OAuth2.Application), osgi.jaxrs.name=OAuthAuthorizationDataMessageBodyWriter, component.name=com.liferay.oauth2.provider.rest.internal.endpoint.authorize.OAuthAuthorizationDataMessageBodyWriter, component.id=2290}_} for extension produced error: java.lang.IllegalArgumentException: interface org.apache.cxf.jaxrs.ext.MessageContext is not visible from class loader [Sanitized]
  WARN  [main][AriesJaxrsServiceRuntime:246] Extension CachingServiceReference {_cachedProperties={osgi.jaxrs.application.select=(osgi.jaxrs.name=Liferay.OAuth2.Application), service.id=3973, objectClass=[javax.ws.rs.ext.MessageBodyWriter], osgi.jaxrs.name=OAuthErrorMessageBodyWriter, osgi.jaxrs.extension.select=null (cached), service.ranking=null (cached), osgi.jaxrs.whiteboard.target=null (cached)}_serviceReference={javax.ws.rs.ext.MessageBodyWriter}={service.id=3973, osgi.jaxrs.extension=true, service.bundleid=660, service.scope=bundle, osgi.jaxrs.application.select=(osgi.jaxrs.name=Liferay.OAuth2.Application), osgi.jaxrs.name=OAuthErrorMessageBodyWriter, component.name=com.liferay.oauth2.provider.rest.internal.endpoint.authorize.OAuthErrorMessageBodyWriter, component.id=2291}_} is registered with error [Sanitized]
  ERROR [main][Whiteboard:80] ServiceReference CachingServiceReference {_cachedProperties={osgi.jaxrs.application.select=(osgi.jaxrs.name=Liferay.OAuth2.Application), service.id=3973, objectClass=[javax.ws.rs.ext.MessageBodyWriter], osgi.jaxrs.name=OAuthErrorMessageBodyWriter, osgi.jaxrs.extension.select=null (cached), service.ranking=null (cached), osgi.jaxrs.whiteboard.target=null (cached)}_serviceReference={javax.ws.rs.ext.MessageBodyWriter}={service.id=3973, osgi.jaxrs.extension=true, service.bundleid=660, service.scope=bundle, osgi.jaxrs.application.select=(osgi.jaxrs.name=Liferay.OAuth2.Application), osgi.jaxrs.name=OAuthErrorMessageBodyWriter, component.name=com.liferay.oauth2.provider.rest.internal.endpoint.authorize.OAuthErrorMessageBodyWriter, component.id=2291}_} for extension produced error: java.lang.IllegalArgumentException: interface org.apache.cxf.jaxrs.ext.MessageContext is not visible from class loader [Sanitized]
  WARN  [main][AriesJaxrsServiceRuntime:246] Extension CachingServiceReference {_cachedProperties={osgi.jaxrs.application.select=null (cached), service.id=1287, objectClass=[javax.ws.rs.ext.MessageBodyReader, javax.ws.rs.ext.MessageBodyWriter], osgi.jaxrs.name=jaxb-json, osgi.jaxrs.extension.select=null (cached), service.ranking=-2147483648, osgi.jaxrs.whiteboard.target=null (cached)}_serviceReference={javax.ws.rs.ext.MessageBodyReader, javax.ws.rs.ext.MessageBodyWriter}={service.id=1287, osgi.jaxrs.extension=true, service.bundleid=551, service.scope=prototype, service.ranking=-2147483648, osgi.jaxrs.name=jaxb-json}_} is registered with error [Sanitized]
  ERROR [main][Whiteboard:80] ServiceReference CachingServiceReference {_cachedProperties={osgi.jaxrs.application.select=null (cached), service.id=1287, objectClass=[javax.ws.rs.ext.MessageBodyReader, javax.ws.rs.ext.MessageBodyWriter], osgi.jaxrs.name=jaxb-json, osgi.jaxrs.extension.select=null (cached), service.ranking=-2147483648, osgi.jaxrs.whiteboard.target=null (cached)}_serviceReference={javax.ws.rs.ext.MessageBodyReader, javax.ws.rs.ext.MessageBodyWriter}={service.id=1287, osgi.jaxrs.extension=true, service.bundleid=551, service.scope=prototype, service.ranking=-2147483648, osgi.jaxrs.name=jaxb-json}_} for extension produced error: java.lang.IllegalArgumentException: interface org.apache.cxf.jaxrs.ext.MessageContext is not visible from class loader [Sanitized]
  WARN  [main][AriesJaxrsServiceRuntime:246] Extension CachingServiceReference {_cachedProperties={osgi.jaxrs.application.select=null (cached), service.id=1287, objectClass=[javax.ws.rs.ext.MessageBodyReader, javax.ws.rs.ext.MessageBodyWriter], osgi.jaxrs.name=jaxb-json, osgi.jaxrs.extension.select=null (cached), service.ranking=-2147483648, osgi.jaxrs.whiteboard.target=null (cached)}_serviceReference={javax.ws.rs.ext.MessageBodyReader, javax.ws.rs.ext.MessageBodyWriter}={service.id=1287, osgi.jaxrs.extension=true, service.bundleid=551, service.scope=prototype, service.ranking=-2147483648, osgi.jaxrs.name=jaxb-json}_} is registered with error [Sanitized]
  ERROR [main][Whiteboard:80] ServiceReference CachingServiceReference {_cachedProperties={osgi.jaxrs.application.select=null (cached), service.id=1287, objectClass=[javax.ws.rs.ext.MessageBodyReader, javax.ws.rs.ext.MessageBodyWriter], osgi.jaxrs.name=jaxb-json, osgi.jaxrs.extension.select=null (cached), service.ranking=-2147483648, osgi.jaxrs.whiteboard.target=null (cached)}_serviceReference={javax.ws.rs.ext.MessageBodyReader, javax.ws.rs.ext.MessageBodyWriter}={service.id=1287, osgi.jaxrs.extension=true, service.bundleid=551, service.scope=prototype, service.ranking=-2147483648, osgi.jaxrs.name=jaxb-json}_} for extension produced error: java.lang.IllegalArgumentException: interface org.apache.cxf.jaxrs.ext.MessageContext is not visible from class loader [Sanitized]
  </code></pre>