Library conflicts with google drive api

Enonic version: 6.8.1
OS: Ubuntu

Hey guys, I’ve been having this weird erros since I added the following lib to my gradle build dependencies:
include ‘com.google.apis:google-api-services-drive:v3-rev81-1.22.0’

When this line is there, I get a series of errors from any page I try to access on my application, here’s the stack trace:

06:22:10.946 WARN  o.e.jetty.servlet.ServletHandler - Error for 
java.lang.LinkageError: loader constraint violation: when resolving method "com.enonic.xp.portal.url.AssetUrlParams.setAsMap(Lcom/google/common/collect/Multimap;)Lcom/enonic/xp/portal/url/AssetUrlParams;" the class loader (instance of org/apache/felix/framework/BundleWiringImpl$BundleClassLoaderJava5) of the current class, com/enonic/xp/lib/portal/url/AssetUrlHandler, and the class loader (instance of org/apache/felix/framework/BundleWiringImpl$BundleClassLoaderJava5) for the method's defining class, com/enonic/xp/portal/url/AssetUrlParams, have different Class objects for the type com/google/common/collect/Multimap used in the signature
	at com.enonic.xp.lib.portal.url.AssetUrlHandler.buildUrl(AssetUrlHandler.java:13) ~[na:na]
	at com.enonic.xp.lib.portal.url.AbstractUrlHandler.createUrl(AbstractUrlHandler.java:32) ~[na:na]
	at com.enonic.xp.lib.portal.url.AbstractUrlHandler.createUrl(AbstractUrlHandler.java:26) ~[na:na]
	at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:639) ~[nashorn.jar:na]
	at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:494) ~[nashorn.jar:na]
	at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393) ~[nashorn.jar:na]
	at jdk.nashorn.api.scripting.ScriptObjectMirror.call(ScriptObjectMirror.java:117) ~[nashorn.jar:na]
	at com.enonic.xp.script.impl.value.FunctionScriptValue.call(FunctionScriptValue.java:36) ~[na:na]
	at com.enonic.xp.script.impl.ScriptExportsImpl.executeMethod(ScriptExportsImpl.java:56) ~[na:na]
	at com.enonic.xp.portal.impl.controller.ControllerScriptImpl.doExecute(ControllerScriptImpl.java:53) ~[na:na]
	at com.enonic.xp.portal.impl.controller.ControllerScriptImpl.execute(ControllerScriptImpl.java:32) ~[na:na]
	at com.enonic.xp.portal.impl.rendering.DescriptorBasedComponentRenderer.doRender(DescriptorBasedComponentRenderer.java:75) ~[na:na]
	at com.enonic.xp.portal.impl.rendering.DescriptorBasedComponentRenderer.render(DescriptorBasedComponentRenderer.java:43) ~[na:na]
	at com.enonic.xp.portal.impl.rendering.DescriptorBasedComponentRenderer.render(DescriptorBasedComponentRenderer.java:22) ~[na:na]
	at com.enonic.xp.portal.impl.postprocess.instruction.ComponentInstruction.renderComponent(ComponentInstruction.java:111) ~[na:na]
	at com.enonic.xp.portal.impl.postprocess.instruction.ComponentInstruction.renderComponent(ComponentInstruction.java:100) ~[na:na]
	at com.enonic.xp.portal.impl.postprocess.instruction.ComponentInstruction.evaluate(ComponentInstruction.java:70) ~[na:na]
	at com.enonic.xp.portal.impl.postprocess.PostProcessEvaluator.executeInstruction(PostProcessEvaluator.java:105) ~[na:na]
	at com.enonic.xp.portal.impl.postprocess.PostProcessEvaluator.processInstructions(PostProcessEvaluator.java:86) ~[na:na]
	at com.enonic.xp.portal.impl.postprocess.PostProcessEvaluator.evaluateInstructions(PostProcessEvaluator.java:59) ~[na:na]
	at com.enonic.xp.portal.impl.postprocess.PostProcessorImpl.processResponseInstructions(PostProcessorImpl.java:69) ~[na:na]
	at com.enonic.xp.portal.impl.rendering.PageRenderer.render(PageRenderer.java:72) ~[na:na]
	at com.enonic.xp.portal.impl.rendering.PageRenderer.render(PageRenderer.java:30) ~[na:na]
	at com.enonic.xp.portal.impl.handler.render.PageHandlerWorker.execute(PageHandlerWorker.java:106) ~[na:na]
	at com.enonic.xp.portal.impl.handler.render.PageHandler.doHandle(PageHandler.java:57) ~[na:na]
	at com.enonic.xp.portal.impl.handler.render.PageHandler.doHandle(PageHandler.java:20) ~[na:na]
	at com.enonic.xp.web.handler.BaseWebHandler.handle(BaseWebHandler.java:65) ~[na:na]
	at com.enonic.xp.web.impl.handler.WebHandlerChainImpl.handle(WebHandlerChainImpl.java:30) ~[na:na]
	at com.enonic.xp.web.handler.BaseWebHandler.handle(BaseWebHandler.java:69) ~[na:na]
	at com.enonic.xp.web.impl.handler.WebHandlerChainImpl.handle(WebHandlerChainImpl.java:30) ~[na:na]
	at com.enonic.xp.web.handler.BaseWebHandler.handle(BaseWebHandler.java:69) ~[na:na]
	at com.enonic.xp.web.impl.handler.WebHandlerChainImpl.handle(WebHandlerChainImpl.java:30) ~[na:na]
	at com.enonic.xp.web.handler.BaseWebHandler.handle(BaseWebHandler.java:69) ~[na:na]
	at com.enonic.xp.web.impl.handler.WebHandlerChainImpl.handle(WebHandlerChainImpl.java:30) ~[na:na]
	at com.enonic.xp.web.handler.BaseWebHandler.handle(BaseWebHandler.java:69) ~[na:na]
	at com.enonic.xp.web.impl.handler.WebHandlerChainImpl.handle(WebHandlerChainImpl.java:30) ~[na:na]
	at com.enonic.xp.web.handler.BaseWebHandler.handle(BaseWebHandler.java:69) ~[na:na]
	at com.enonic.xp.web.impl.handler.WebHandlerChainImpl.handle(WebHandlerChainImpl.java:30) ~[na:na]
	at com.enonic.xp.web.handler.BaseWebHandler.handle(BaseWebHandler.java:69) ~[na:na]
	at com.enonic.xp.web.impl.handler.WebHandlerChainImpl.handle(WebHandlerChainImpl.java:30) ~[na:na]
	at com.enonic.xp.web.handler.BaseWebHandler.handle(BaseWebHandler.java:69) ~[na:na]
	at com.enonic.xp.web.impl.handler.WebHandlerChainImpl.handle(WebHandlerChainImpl.java:30) ~[na:na]
	at com.enonic.xp.web.handler.BaseWebHandler.handle(BaseWebHandler.java:69) ~[na:na]
	at com.enonic.xp.web.impl.handler.WebHandlerChainImpl.handle(WebHandlerChainImpl.java:30) ~[na:na]
	at com.enonic.xp.web.handler.BaseWebHandler.handle(BaseWebHandler.java:69) ~[na:na]
	at com.enonic.xp.web.impl.handler.WebHandlerChainImpl.handle(WebHandlerChainImpl.java:30) ~[na:na]
	at com.enonic.xp.web.handler.BaseWebHandler.handle(BaseWebHandler.java:69) ~[na:na]
	at com.enonic.xp.web.impl.handler.WebHandlerChainImpl.handle(WebHandlerChainImpl.java:30) ~[na:na]
	at com.enonic.xp.portal.handler.BasePortalHandler.doHandle(BasePortalHandler.java:48) ~[na:na]
	at com.enonic.xp.web.handler.BaseWebHandler.handle(BaseWebHandler.java:65) ~[na:na]
	at com.enonic.xp.web.impl.handler.WebHandlerChainImpl.handle(WebHandlerChainImpl.java:30) ~[na:na]
	at com.enonic.xp.web.handler.BaseWebHandler.handle(BaseWebHandler.java:69) ~[na:na]
	at com.enonic.xp.web.impl.handler.WebHandlerChainImpl.handle(WebHandlerChainImpl.java:30) ~[na:na]
	at com.enonic.xp.web.impl.handler.WebDispatcher.dispatch(WebDispatcher.java:44) ~[na:na]
	at com.enonic.xp.web.impl.handler.WebDispatcherServlet.doHandle(WebDispatcherServlet.java:133) ~[na:na]
	at com.enonic.xp.web.impl.handler.WebDispatcherServlet.service(WebDispatcherServlet.java:61) ~[na:na]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[web-jetty-6.8.1.jar:6.8.1]
	at org.apache.felix.http.base.internal.handler.ServletHandler.handle(ServletHandler.java:85) ~[web-jetty-6.8.1.jar:6.8.1]
	at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:79) ~[web-jetty-6.8.1.jar:6.8.1]
	at com.enonic.xp.portal.impl.auth.AuthFilter.doHandle(AuthFilter.java:43) ~[na:na]
	at com.enonic.xp.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:31) ~[na:na]
	at com.enonic.xp.web.filter.BaseWebFilter.doFilter(BaseWebFilter.java:33) ~[na:na]
	at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:135) ~[web-jetty-6.8.1.jar:6.8.1]
	at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:74) ~[web-jetty-6.8.1.jar:6.8.1]
	at com.enonic.xp.web.impl.auth.BasicAuthFilter.doHandle(BasicAuthFilter.java:31) ~[na:na]
	at com.enonic.xp.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:31) ~[na:na]
	at com.enonic.xp.web.filter.BaseWebFilter.doFilter(BaseWebFilter.java:33) ~[na:na]
	at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:135) ~[web-jetty-6.8.1.jar:6.8.1]
	at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:74) ~[web-jetty-6.8.1.jar:6.8.1]
	at com.enonic.xp.web.impl.context.ContextFilter.lambda$doHandle$0(ContextFilter.java:34) ~[na:na]
	at com.enonic.xp.context.ContextImpl.callWith(ContextImpl.java:101) ~[na:na]
	at com.enonic.xp.web.impl.context.ContextFilter.doHandle(ContextFilter.java:33) ~[na:na]
	at com.enonic.xp.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:31) ~[na:na]
	at com.enonic.xp.web.filter.BaseWebFilter.doFilter(BaseWebFilter.java:33) ~[na:na]
	at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:135) ~[web-jetty-6.8.1.jar:6.8.1]
	at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:74) ~[web-jetty-6.8.1.jar:6.8.1]
	at com.enonic.xp.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:26) ~[na:na]
	at com.enonic.xp.web.filter.BaseWebFilter.doFilter(BaseWebFilter.java:33) ~[na:na]
	at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:135) ~[web-jetty-6.8.1.jar:6.8.1]
	at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:74) ~[web-jetty-6.8.1.jar:6.8.1]
	at org.apache.felix.http.base.internal.dispatch.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:73) ~[web-jetty-6.8.1.jar:6.8.1]
	at com.enonic.xp.web.vhost.impl.VirtualHostFilter.doHandle(VirtualHostFilter.java:43) ~[na:na]
	at com.enonic.xp.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:31) ~[na:na]
	at com.enonic.xp.web.filter.BaseWebFilter.doFilter(BaseWebFilter.java:33) ~[na:na]
	at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:135) ~[web-jetty-6.8.1.jar:6.8.1]
	at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:74) ~[web-jetty-6.8.1.jar:6.8.1]
	at com.enonic.xp.web.impl.dos.DosFilterWrapper.doFilter(DosFilterWrapper.java:60) ~[na:na]
	at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:135) ~[web-jetty-6.8.1.jar:6.8.1]
	at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:74) ~[web-jetty-6.8.1.jar:6.8.1]
	at org.apache.felix.http.base.internal.dispatch.Dispatcher.dispatch(Dispatcher.java:124) ~[web-jetty-6.8.1.jar:6.8.1]
	at org.apache.felix.http.base.internal.DispatcherServlet.service(DispatcherServlet.java:61) ~[web-jetty-6.8.1.jar:6.8.1]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[web-jetty-6.8.1.jar:6.8.1]
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821) ~[web-jetty-6.8.1.jar:6.8.1]
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:583) [web-jetty-6.8.1.jar:6.8.1]
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) [web-jetty-6.8.1.jar:6.8.1]
	at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:437) [web-jetty-6.8.1.jar:6.8.1]
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226) [web-jetty-6.8.1.jar:6.8.1]
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158) [web-jetty-6.8.1.jar:6.8.1]
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511) [web-jetty-6.8.1.jar:6.8.1]
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) [web-jetty-6.8.1.jar:6.8.1]
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090) [web-jetty-6.8.1.jar:6.8.1]
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) [web-jetty-6.8.1.jar:6.8.1]
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119) [web-jetty-6.8.1.jar:6.8.1]
	at com.codahale.metrics.jetty9.InstrumentedHandler.handle(InstrumentedHandler.java:240) [metrics-jetty9-3.1.2.jar:3.1.2]
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119) [web-jetty-6.8.1.jar:6.8.1]
	at org.eclipse.jetty.server.Server.handle(Server.java:517) [web-jetty-6.8.1.jar:6.8.1]
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:306) [web-jetty-6.8.1.jar:6.8.1]
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242) [web-jetty-6.8.1.jar:6.8.1]
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261) [web-jetty-6.8.1.jar:6.8.1]
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95) [web-jetty-6.8.1.jar:6.8.1]
	at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75) [web-jetty-6.8.1.jar:6.8.1]
	at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213) [web-jetty-6.8.1.jar:6.8.1]
	at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147) [web-jetty-6.8.1.jar:6.8.1]
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654) [web-jetty-6.8.1.jar:6.8.1]
	at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572) [web-jetty-6.8.1.jar:6.8.1]
	at java.lang.Thread.run(Thread.java:745) [na:1.8.0_102]

So, it looks like the drive API I’m using is conflicting with something core to enonic, can we try to get around that? Thanks!

1 Like

I think we figure out that. We have to add the lines below in build.gradle:

include( 'com.google.api-client:google-api-client:1.22.0' ) {
    exclude group: 'com.google.guava', module: 'guava-jdk5'
}

include( 'com.google.oauth-client:google-oauth-client-jetty:1.22.0' ) {
    exclude group: 'com.google.guava', module: 'guava-jdk5'
}

include( 'com.google.apis:google-api-services-drive:v3-rev81-1.22.0' ) {
    exclude group: 'com.google.guava', module: 'guava-jdk5'
}
1 Like