grpc-ecosystem / grpc-ecosystem/grpc-spring

java.lang.ClassNotFoundException: io.netty.channel.unix.DomainSocketAddress

Open
#649 0 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
Java
Stars
3.7k
Forks
858
PR merge metrics
No merged PRs in 30d

Description

**The bug**

After #548 spring context fails to start if `grpc-netty-shaded` is replaced with `grpc-netty`. You need to manually add `netty-transport-native-epoll` dependency to fix the issue.

**Stacktrace and logs**

```
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'nettyGrpcChannelFactory' defined in class path resource [net/devh/boot/grpc/client/autoconfigure/GrpcClientAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [net.devh.boot.grpc.client.channelfactory.GrpcChannelFactory]: Factory method 'nettyGrpcChannelFactory' threw exception; nested exception is java.lang.NoClassDefFoundError: io/netty/channel/unix/DomainSocketAddress
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:658)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:638)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1334)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1177)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:564)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:233)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveNamedBean(DefaultListableBeanFactory.java:1273)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveNamedBean(DefaultListableBeanFactory.java:1234)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveBean(DefaultListableBeanFactory.java:494)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:349)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:342)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1172)
at net.devh.boot.grpc.client.inject.GrpcClientBeanPostProcessor.getChannelFactory(GrpcClientBeanPostProcessor.java:201)
at net.devh.boot.grpc.client.inject.GrpcClientBeanPostProcessor.processInjectionPoint(GrpcClientBeanPostProcessor.java:175)
... 73 common frames omitted
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [net.devh.boot.grpc.client.channelfactory.GrpcChannelFactory]: Factory method 'nettyGrpcChannelFactory' threw exception; nested exception is java.lang.NoClassDefFoundError: io/netty/channel/unix/DomainSocketAddress
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653)
... 90 common frames omitted
Caused by: java.lang.NoClassDefFoundError: io/netty/channel/unix/DomainSocketAddress
at net.devh.boot.grpc.client.autoconfigure.GrpcClientAutoConfiguration.nettyGrpcChannelFactory(GrpcClientAutoConfiguration.java:171)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
... 91 common frames omitted
Caused by: java.lang.ClassNotFoundException: io.netty.channel.unix.DomainSocketAddress
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:606)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:168)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 97 common frames omitted
```

**Steps to Reproduce**

Steps to reproduce the behavior:

use the following dependencies in `pom.xml`:

```xml

io.grpc
grpc-netty


net.devh
grpc-client-spring-boot-starter
2.13.1.RELEASE


io.grpc
grpc-netty-shaded



```
start the app with grpc client

**The application's environment**

Which versions do you use?
* Spring (boot): 2.6.3
* grpc-java: 1.45.1
* grpc-spring-boot-starter: 1.13.1
* java: 11 64bit

**Additional context**

* Did it ever work before?
yes
* Do you have a demo?
no

Contributor guide

Open the contributing guide

Research direction

Start with GrpcClientAutoConfiguration.java at line 171 and the dependency setup in pom.xml, reproducing the failure with grpc-netty instead of grpc-netty-shaded. Trace why DomainSocketAddress is loaded during application startup and verify that the application starts with the documented Spring Boot, grpc-java, and Java versions without requiring an extra manual dependency.

Written by the indexing model from the issue text.

Assessment

Tech stack
grpc, java, spring-boot
Domain
api, backend
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.