-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Shaded version of docker-client: ClassNotFoundException org.mandas.docker.client.shaded.javax.ws.rs.core.Configurable #84
Comments
Hi, thanks for reaching out. This must be probably triggered by the update of jersey-client to 2.28. The Have to test it a little bit though since other artifacts may be affected as well (unless you can grab the branch referenced in the PR, build it and test it locally) |
- Remove unused shading of javax.annotation
Hi again, Just tested it with a sample spring-boot project and I 've managed to list the containers in my docker host. Therefore, I assume we 're ok. Closing this issue, patch release 2.0.1 by tomorrow. Thanks |
Hi @dmandalidis Great. Thank you so much. I'll test it tomorrow and give you feedback! |
I actually tried it out myself now. I cloned the repo and build it with maven from the master branch. However there were some tests that did not pass.
I then built it without the tests with I am not sure if those failed test have anything to do with the errors i get during execution. The exception is thrown here in my code: //Constructor
public BasicDockerClientService(){
try {
docker = DefaultDockerClient.fromEnv().build();
//Exception is thrown here
System.out.println(docker.info().toString());
}
... Here the stacktrace: org.mandas.docker.client.exceptions.DockerException: java.util.concurrent.ExecutionException: org.mandas.docker.client.shaded.javax.ws.rs.ProcessingException: java.lang.UnsatisfiedLinkError: could not load FFI provider org.mandas.docker.client.shaded.jnr.ffi.provider.jffi.Provider
at org.mandas.docker.client.DefaultDockerClient.propagate(DefaultDockerClient.java:2788)
at org.mandas.docker.client.DefaultDockerClient.request(DefaultDockerClient.java:2652)
at org.mandas.docker.client.DefaultDockerClient.info(DefaultDockerClient.java:612)
at ch.hevs.medgift.eaasy.swarmbackend.docker.BasicDockerClientService.<init>(BasicDockerClientService.java:28)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:172)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1262)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1164)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:538)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:273)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1239)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1166)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:593)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:374)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1378)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:575)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:273)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1239)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1166)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:593)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:374)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1378)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:575)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:273)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1239)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1166)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:593)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:374)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1378)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:575)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:846)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:863)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:546)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:775)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:316)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1260)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1248)
at ch.hevs.medgift.eaasy.swarmbackend.EaasySwarmBackendApplication.main(EaasySwarmBackendApplication.java:10)
Caused by: java.util.concurrent.ExecutionException: org.mandas.docker.client.shaded.javax.ws.rs.ProcessingException: java.lang.UnsatisfiedLinkError: could not load FFI provider org.mandas.docker.client.shaded.jnr.ffi.provider.jffi.Provider
at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)
at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1895)
at org.mandas.docker.client.DefaultDockerClient.request(DefaultDockerClient.java:2650)
... 65 more
Caused by: org.mandas.docker.client.shaded.javax.ws.rs.ProcessingException: java.lang.UnsatisfiedLinkError: could not load FFI provider org.mandas.docker.client.shaded.jnr.ffi.provider.jffi.Provider
at org.mandas.docker.client.shaded.org.glassfish.jersey.client.ClientRuntime.processFailure(ClientRuntime.java:207)
at org.mandas.docker.client.shaded.org.glassfish.jersey.client.ClientRuntime.access$100(ClientRuntime.java:61)
at org.mandas.docker.client.shaded.org.glassfish.jersey.client.ClientRuntime$2.lambda$failure$1(ClientRuntime.java:159)
at org.mandas.docker.client.shaded.org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)
at org.mandas.docker.client.shaded.org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)
at org.mandas.docker.client.shaded.org.glassfish.jersey.internal.Errors.process(Errors.java:292)
at org.mandas.docker.client.shaded.org.glassfish.jersey.internal.Errors.process(Errors.java:274)
at org.mandas.docker.client.shaded.org.glassfish.jersey.internal.Errors.process(Errors.java:244)
at org.mandas.docker.client.shaded.org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:288)
at org.mandas.docker.client.shaded.org.glassfish.jersey.client.ClientRuntime$2.failure(ClientRuntime.java:159)
at org.mandas.docker.client.shaded.org.glassfish.jersey.apache.connector.ApacheConnector.apply(ApacheConnector.java:483)
at org.mandas.docker.client.shaded.org.glassfish.jersey.client.ClientRuntime.lambda$null$3(ClientRuntime.java:163)
at org.mandas.docker.client.shaded.org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)
at org.mandas.docker.client.shaded.org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)
at org.mandas.docker.client.shaded.org.glassfish.jersey.internal.Errors.process(Errors.java:292)
at org.mandas.docker.client.shaded.org.glassfish.jersey.internal.Errors.process(Errors.java:274)
at org.mandas.docker.client.shaded.org.glassfish.jersey.internal.Errors.process(Errors.java:244)
at org.mandas.docker.client.shaded.org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:288)
at org.mandas.docker.client.shaded.org.glassfish.jersey.client.ClientRuntime.lambda$createRunnableForAsyncProcessing$4(ClientRuntime.java:139)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.UnsatisfiedLinkError: could not load FFI provider org.mandas.docker.client.shaded.jnr.ffi.provider.jffi.Provider
at org.mandas.docker.client.shaded.jnr.ffi.provider.InvalidProvider$1.loadLibrary(InvalidProvider.java:48)
at org.mandas.docker.client.shaded.jnr.ffi.LibraryLoader.load(LibraryLoader.java:325)
at org.mandas.docker.client.shaded.jnr.unixsocket.Native.<clinit>(Native.java:80)
at org.mandas.docker.client.shaded.jnr.unixsocket.UnixSocketChannel.<init>(UnixSocketChannel.java:101)
at org.mandas.docker.client.shaded.jnr.unixsocket.UnixSocketChannel.open(UnixSocketChannel.java:60)
at org.mandas.docker.client.UnixConnectionSocketFactory.createSocket(UnixConnectionSocketFactory.java:69)
at org.mandas.docker.client.UnixConnectionSocketFactory.createSocket(UnixConnectionSocketFactory.java:44)
at org.mandas.docker.client.shaded.org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:118)
at org.mandas.docker.client.shaded.org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353)
at org.mandas.docker.client.shaded.org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380)
at org.mandas.docker.client.shaded.org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
at org.mandas.docker.client.shaded.org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
at org.mandas.docker.client.shaded.org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88)
at org.mandas.docker.client.shaded.org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
at org.mandas.docker.client.shaded.org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
at org.mandas.docker.client.shaded.org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:71)
at org.mandas.docker.client.shaded.org.glassfish.jersey.apache.connector.ApacheConnector.apply(ApacheConnector.java:426)
at org.mandas.docker.client.shaded.org.glassfish.jersey.apache.connector.ApacheConnector.apply(ApacheConnector.java:479)
... 13 more
Caused by: java.lang.NoClassDefFoundError: com/kenai/jffi/Type
at org.mandas.docker.client.shaded.jnr.ffi.provider.jffi.NativeRuntime.jafflType(NativeRuntime.java:193)
at org.mandas.docker.client.shaded.jnr.ffi.provider.jffi.NativeRuntime.buildTypeMap(NativeRuntime.java:76)
at org.mandas.docker.client.shaded.jnr.ffi.provider.jffi.NativeRuntime.<init>(NativeRuntime.java:57)
at org.mandas.docker.client.shaded.jnr.ffi.provider.jffi.NativeRuntime.<init>(NativeRuntime.java:41)
at org.mandas.docker.client.shaded.jnr.ffi.provider.jffi.NativeRuntime$SingletonHolder.<clinit>(NativeRuntime.java:53)
at org.mandas.docker.client.shaded.jnr.ffi.provider.jffi.NativeRuntime.getInstance(NativeRuntime.java:49)
at org.mandas.docker.client.shaded.jnr.ffi.provider.jffi.Provider.<init>(Provider.java:29)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.lang.Class.newInstance(Class.java:442)
at org.mandas.docker.client.shaded.jnr.ffi.provider.FFIProvider$SystemProviderSingletonHolder.getInstance(FFIProvider.java:68)
at org.mandas.docker.client.shaded.jnr.ffi.provider.FFIProvider$SystemProviderSingletonHolder.<clinit>(FFIProvider.java:57)
at org.mandas.docker.client.shaded.jnr.ffi.provider.FFIProvider.getSystemProvider(FFIProvider.java:35)
at org.mandas.docker.client.shaded.jnr.ffi.LibraryLoader.create(LibraryLoader.java:73)
at org.mandas.docker.client.shaded.jnr.unixsocket.Native.<clinit>(Native.java:76)
... 28 more
Caused by: java.lang.ClassNotFoundException: com.kenai.jffi.Type
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 45 more |
Hi, Let's not dig further into this since the test errors seem to be as a configuration issue in your side (master build passes here). The 2.0.1 is out now containing the shading fix, please use that one and let me know if you face further issues. |
Thank you @dmandalidis ! I now tested your new release. However i got another error when trying to read the service logs. Will create another issue for it. Thanks for all your effort! |
Thanks for the release - I was running into the same issues and was planning on digging in today. So nice to have them already fixed! 🤞 |
@ieggel @dmandalidis I think I am running into something similar to Ivan
|
Hi @tony-- Please open another issue for this one |
Is this a BUG REPORT or FEATURE REQUEST?: BUG REPORT
Description
First of all thank you for keeping this project alive!
I'm using SpringBoot 2.1.0 for Rest Services and therefore i have to use the shaded version of the library. However as soon as I start my application, there is immediately a
java.lang.ClassNotFoundException
thrown with the messageorg.mandas.docker.client.shaded.javax.ws.rs.core.Configurable
.This never happened before when using the spotify version. The last spotify version i used was:
com.spotify:docker-client:8.14.5:shaded
.Thanks for any help!
How to reproduce
What do you expect
I would expect that the application starts by creating a new instance of
DockerClient
.What happened instead
java.lang.NoClassDefFoundError: org/mandas/docker/client/shaded/javax/ws/rs/core/Configurable
was thrownSoftware:
docker version
:org.mandas:docker-client:2.0.0:shaded
Full backtrace
The text was updated successfully, but these errors were encountered: