Conflicting jars issues with swagger-jersey2-jaxrs_2.10

2,327 views
Skip to first unread message

Leny Tan

unread,
Mar 4, 2014, 7:31:48 PM3/4/14
to swagger-sw...@googlegroups.com
Hi, all

Can someone help me? I think this is related to conflicting jars issues. 
I am trying to integrate with swagger-jersey2-jaxrs_2.10 vesion 1.3.2 with Jersey 2.6 version. 

Here are my dependencies:
    ext.springVersion = "3.2.8.RELEASE"
    ext.jerseyVersion = "2.6"

    compile("org.glassfish.jersey.containers:jersey-container-servlet:${jerseyVersion}")
    compile("org.glassfish.jersey.ext:jersey-spring3:${jerseyVersion}")
    compile("org.springframework:spring-core:${springVersion}")
    compile("org.springframework:spring-context:${springVersion}")
    compile("org.springframework:spring-beans:${springVersion}")
    compile("org.springframework:spring-tx:${springVersion}")
    compile("org.springframework:spring-web:${springVersion}")
    compile("org.springframework:spring-hibernate3:2.0.8")
    compile ('com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.3.0')
    compile("javax.transaction:jta:1.1")

    testCompile("org.springframework:spring-test:${springVersion}")


    compile("javax.mail:mail:1.4")
    compile("com.wordnik:swagger-jersey-jaxrs_2.10:1.3.2"){
        exclude group:"org.glassfish.jersey.media"
        exclude group:"org.glassfish.jersey.containers"
    }


however I go the folllowing errors during war deployment. Btw, I am using Tomcat 7.0.52. 

A MultiException has 3 exceptions.  They are:
1. java.lang.IllegalArgumentException: The MultiPartConfig instance we expected is not present.  Have you registered the MultiPartConfigProvider class?
2. java.lang.IllegalStateException: Unable to perform operation: create on com.sun.jersey.multipart.impl.MultiPartReaderClientSide
3. java.lang.IllegalStateException: Unable to perform operation: create on org.glassfish.jersey.message.internal.MessageBodyFactory

at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:448)
at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:456)
at org.jvnet.hk2.internal.PerLookupContext.findOrCreate(PerLookupContext.java:69)
at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2445)
at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:98)
at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:87)
at org.glassfish.jersey.internal.inject.ProviderToService.apply(ProviderToService.java:58)
at org.glassfish.jersey.internal.inject.ProviderToService.apply(ProviderToService.java:54)
at jersey.repackaged.com.google.common.collect.Iterators$8.transform(Iterators.java:860)
at jersey.repackaged.com.google.common.collect.TransformedIterator.next(TransformedIterator.java:48)
at java.util.AbstractCollection.addAll(AbstractCollection.java:341)
at java.util.LinkedHashSet.<init>(LinkedHashSet.java:169)
at jersey.repackaged.com.google.common.collect.Sets.newLinkedHashSet(Sets.java:292)
at org.glassfish.jersey.internal.inject.Providers.getClasses(Providers.java:364)
at org.glassfish.jersey.internal.inject.Providers.getProviders(Providers.java:186)
at org.glassfish.jersey.message.internal.MessageBodyFactory.<init>(MessageBodyFactory.java:304)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at org.glassfish.hk2.utilities.reflection.ReflectionHelper.makeMe(ReflectionHelper.java:1105)
at org.jvnet.hk2.internal.ClazzCreator.createMe(ClazzCreator.java:292)
at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:422)
at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:456)
at org.jvnet.hk2.internal.SingletonContext$1.compute(SingletonContext.java:114)
at org.jvnet.hk2.internal.SingletonContext$1.compute(SingletonContext.java:102)
at org.glassfish.hk2.utilities.cache.Cache$OriginThreadAwareFuture$1.call(Cache.java:97)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at org.glassfish.hk2.utilities.cache.Cache$OriginThreadAwareFuture.run(Cache.java:154)
at org.glassfish.hk2.utilities.cache.Cache.compute(Cache.java:199)
at org.jvnet.hk2.internal.SingletonContext.findOrCreate(SingletonContext.java:153)
at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2445)
at org.jvnet.hk2.internal.ServiceLocatorImpl.getService(ServiceLocatorImpl.java:621)
at org.jvnet.hk2.internal.ServiceLocatorImpl.getService(ServiceLocatorImpl.java:606)
at org.glassfish.jersey.server.model.ComponentModelValidator.<init>(ComponentModelValidator.java:97)
at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:457)
at org.glassfish.jersey.server.ApplicationHandler.access$500(ApplicationHandler.java:162)
at org.glassfish.jersey.server.ApplicationHandler$3.run(ApplicationHandler.java:322)
at org.glassfish.jersey.internal.Errors$2.call(Errors.java:289)
at org.glassfish.jersey.internal.Errors$2.call(Errors.java:286)
at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
at org.glassfish.jersey.internal.Errors.processWithException(Errors.java:286)
at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:319)
at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:284)
at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:311)
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:168)
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:358)
at javax.servlet.GenericServlet.init(GenericServlet.java:158)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1279)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1192)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1087)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5210)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5493)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
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:744)
Caused by: java.lang.IllegalArgumentException: The MultiPartConfig instance we expected is not present.  Have you registered the MultiPartConfigProvider class?
at com.sun.jersey.multipart.impl.MultiPartReaderClientSide.<init>(MultiPartReaderClientSide.java:102)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at org.glassfish.hk2.utilities.reflection.ReflectionHelper.makeMe(ReflectionHelper.java:1105)
at org.jvnet.hk2.internal.ClazzCreator.createMe(ClazzCreator.java:292)
at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:422)
... 60 more

Ron

unread,
Mar 5, 2014, 4:47:57 AM3/5/14
to swagger-sw...@googlegroups.com
Hi Leny,

Welcome to Swagger!

I don't see any direct conflict as you excluded the jersey dependencies from swagger.
Just to be sure, if you exclude Swagger from your application, you don't get this error?
Also, which dependency management system to do use?


--
You received this message because you are subscribed to the Google Groups "Swagger" group.
To unsubscribe from this group and stop receiving emails from it, send an email to swagger-swaggers...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Leny Tan

unread,
Mar 5, 2014, 11:00:46 AM3/5/14
to swagger-sw...@googlegroups.com
Hi Ron,

Thank you. We've been using swagger from our earlier project (Jersey 1.12), now we start a new project and just setting up again.

Yes, if I exclude Swagger from my application, I don't get this error.
I use gradle. 

FYI, last night I also tried to downgrade to Jersey 2.5.1 and it works. So, definitely issues with Jersey 2.6. 

Snippets from build.gradle for my dependencies:

    ...
    ext.jerseyVersion = "2.5.1"

    compile("org.glassfish.jersey.containers:jersey-container-servlet:${jerseyVersion}")
    compile("org.glassfish.jersey.ext:jersey-spring3:${jerseyVersion}")

    compile("com.wordnik:swagger-jersey-jaxrs_2.10:1.3.2")
    ...




Thanks,
Leny


--
You received this message because you are subscribed to a topic in the Google Groups "Swagger" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/swagger-swaggersocket/bBeBDTkFFeI/unsubscribe.
To unsubscribe from this group and all its topics, send an email to swagger-swaggers...@googlegroups.com.

Ron

unread,
Mar 5, 2014, 11:05:34 AM3/5/14
to swagger-sw...@googlegroups.com
Okay, Leny, please try using the swagger-jersey2-jaxrs dependency instead (same version).
However, there's a small bug with that dependency and it pulls in the jax-rs 1.0 spec which could cause a different set of problems. So to avoid that, please exclude this dependency: javax.ws.rs:jsr311-api:jar:1.1.1

Try it out and let me know if it works. The swagger-jersey2-jaxrs pulls in jersey 2.1 but gradle should know to ignore it and override it with the 2.6 version you state (at least maven does that).

Leny Tan

unread,
Mar 7, 2014, 4:48:42 PM3/7/14
to swagger-sw...@googlegroups.com
i tried that,
compile("com.wordnik:swagger-jersey2-jaxrs_2.10:1.3.2"){
        exclude group:"javax.ws.rs:jsr311-api:jar:1.1.1"
    }

but got a different error: (even still with Jersey 2.5.1)
StandardWrapper.Throwable
java.lang.NoSuchMethodError: org.objectweb.asm.ClassReader.accept(Lorg/objectweb/asm/ClassVisitor;I)V
at org.glassfish.jersey.server.internal.scanning.AnnotationAcceptingListener.process(AnnotationAcceptingListener.java:169)
at org.glassfish.jersey.server.ResourceConfig.scanClasses(ResourceConfig.java:883)
at org.glassfish.jersey.server.ResourceConfig._getClasses(ResourceConfig.java:840)
at org.glassfish.jersey.server.ResourceConfig.getClasses(ResourceConfig.java:755)
at org.glassfish.jersey.server.ResourceConfig$WrappingResourceConfig._getClasses(ResourceConfig.java:1113)
at org.glassfish.jersey.server.ResourceConfig.getClasses(ResourceConfig.java:755)
at org.glassfish.jersey.server.ResourceConfig$RuntimeConfig.<init>(ResourceConfig.java:1171)
at

Leny Tan

unread,
Mar 7, 2014, 5:08:09 PM3/7/14
to swagger-sw...@googlegroups.com
i got it to work. i need to include this dependency:

compile("org.glassfish.jersey.media:jersey-media-multipart:${jerseyVersion}")

what are the issues with JaxRs documentation?


thanks
Leny

Ron

unread,
Mar 8, 2014, 2:00:34 AM3/8/14
to swagger-sw...@googlegroups.com
Hi Leny,

Glad you have it configured and working.
Not sure which issues you're referring to. If you're talking about what I mentioned regarding the swagger-jersey2-jaxrs module, it's just that it pulls in the jax-rs1.0 spec as a dependency. Once you exclude it, you should have no issues.


--
You received this message because you are subscribed to the Google Groups "Swagger" group.
To unsubscribe from this group and stop receiving emails from it, send an email to swagger-swaggers...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

ryanmg...@gmail.com

unread,
Mar 11, 2014, 5:25:57 PM3/11/14
to swagger-sw...@googlegroups.com
I had the same problem... I put my work-around in the issue I posted here.
To unsubscribe from this group and stop receiving emails from it, send an email to swagger-swaggersocket+unsub...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages