“NoSuchMethodErrors” due to multiple versions of io.netty:netty-all:jar
- Dominant language
- Java
- Stars
- 2.4k
- Forks
- 2k
- PR merge metrics
- No merged PRs in 30d
Description
## Issue description
Hi, there are multiple versions of **_io.netty:netty-all_** in **_dubbo-samples-ssl/dubbo-samples-ssl-provider_** of version **_1.0-SNAPSHOT_**. As shown in the following dependency tree, according to Maven "nearest wins" strategy, only **_io.netty:netty-all:4.1.36.Final_** can be loaded, **_io.netty:netty-all:4.1.25.Final_** will be shadowed.
However, several methods defined in shadowed version **_io.netty:netty-all:4.1.25_**.Final are referenced by client project via **_org.apache.dubbo:dubbo:2.7.7_** but missing in the actually loaded version **_io.netty:netty-all:4.1.36.Final_**.
For instance, the following missing method(defined in **_io.netty:netty-all:4.1.25.Final_**) are actually referenced by **_dubbo-samples-ssl-provider_**, which will introduce a runtime error(i.e., "NoSuchMethodError") into **_dubbo-samples-ssl-provider_**.
1. **_(int,java.util.concurrent.ThreadFactory)>_** is invoked by **_dubbo-samples-ssl-provider_** via the following path:
```
path--
org.apache.dubbo:dubbo-samples-ssl-provider:1.0-SNAPSHOT;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
```
2. **__** is invoked by **_dubbo-samples-ssl-provider_** via the following path:
```
path--
org.apache.dubbo:dubbo-samples-ssl-provider:1.0-SNAPSHOT;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
io.netty.channel.DelegatingChannelPromiseNotifier: io.netty.channel.ChannelFuture sync()
```
3. **__** is invoked by **_dubbo-samples-ssl-provider_** via the following path:
```
path--
org.apache.dubbo:dubbo-samples-ssl-provider:1.0-SNAPSHOT;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
io.netty.channel.DelegatingChannelPromiseNotifier: io.netty.channel.ChannelFuture sync()
```
4. **__** is invoked by _**dubbo-samples-ssl-provider**_ via the following path:
```
path--
org.apache.dubbo:dubbo-samples-ssl-provider:1.0-SNAPSHOT;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
io.netty.channel.DelegatingChannelPromiseNotifier: io.netty.channel.ChannelFuture sync()
```
5. **__** is invoked by **_dubbo-samples-ssl-provider_** via the following path:
```
path--
org.apache.dubbo:dubbo-samples-ssl-provider:1.0-SNAPSHOT;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
```
6. **__** is invoked by **_dubbo-samples-ssl-provider_** via the following path:
```
path--
org.apache.dubbo:dubbo-samples-ssl-provider:1.0-SNAPSHOT;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
```
7. **__** is invoked by **_dubbo-samples-ssl-provider_** via the following path:
```
path--
org.apache.dubbo:dubbo-samples-ssl-provider:1.0-SNAPSHOT;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
org.apache.dubbo:dubbo:2.7.7;
```
## Suggested fixing solutions:
1. Change direct dependency io.netty:netty-all from **_4.1.36.Final_** to **_4.1.25.Final_**. Because version **_4.1.25.Final_** includes the above missing methods and is compatible with other versions of **_io.netty:netty-all_** in the project.
Please let me know if this solution you agree to? I can submit a PR to fix it.
Thank you very much for your attention.
Best regards,
## Dependency tree----
[INFO] | | | \- commons-logging:commons-logging:jar:1.2:compile
[INFO] | | \- org.springframework:spring-expression:jar:4.3.16.RELEASE:compile
[INFO] | | \- (org.springframework:spring-core:jar:4.3.16.RELEASE:compile - omitted for duplicate)
[INFO] | +- com.alibaba.spring:spring-context-support:jar:1.0.6:compile
[INFO] | +- org.javassist:javassist:jar:3.20.0-GA:compile
[INFO] | +- (io.netty:netty-all:jar:4.1.36.Final:compile - version managed from 4.1.25.Final; omitted for duplicate)
[INFO] | +- com.google.code.gson:gson:jar:2.8.5:compile
[INFO] | \- org.yaml:snakeyaml:jar:1.20:compile
[INFO] +- org.apache.dubbo:dubbo-dependencies-zookeeper:pom:2.7.7:compile
[INFO] | +- org.apache.curator:curator-recipes:jar:4.0.1:compile
[INFO] | | \- org.apache.curator:curator-framework:jar:4.0.1:compile
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.