You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@jclouds.apache.org by "Bing-ok (Jira)" <ji...@apache.org> on 2020/07/23 02:34:00 UTC

[jira] [Comment Edited] (JCLOUDS-1550) “NoSuchMethodErrors” due to multiple versions of com.google.guava:jar

    [ https://issues.apache.org/jira/browse/JCLOUDS-1550?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17163175#comment-17163175 ] 

Bing-ok edited comment on JCLOUDS-1550 at 7/23/20, 2:33 AM:
------------------------------------------------------------

I‘m testing with 2.3.0-SNAPSHOT in repository jclouds/jclouds and `project/pom.xml` specifies Guava 18.0. Could you help me review this issue?


was (Author: bing-ok):
I‘m testing with 2.3.0-SNAPSHOT in repository jclouds/jclouds and `project/pom.xml` specifies Guava 18.0. Can I submit a PR to fix it? 

> “NoSuchMethodErrors” due to multiple versions of com.google.guava:jar
> ---------------------------------------------------------------------
>
>                 Key: JCLOUDS-1550
>                 URL: https://issues.apache.org/jira/browse/JCLOUDS-1550
>             Project: jclouds
>          Issue Type: Bug
>    Affects Versions: 2.3.0
>            Reporter: Bing-ok
>            Priority: Major
>
> Hi, there are multiple versions of _*com.google.guava:guava*_ in _*jclouds-master\providers\skalicloud-sdg-my*_. As shown in the following dependency tree, according to Maven's “nearest wins” strategy, only _*com.google.guava:guava:18.0*_ can be loaded, _*com.google.guava:guava:19.0*_ and _*com.google.guava:guava:22.0*_ will be shadowed.
> As _*com.google.guava:guava:22.0*_ has not been loaded during the building process, several methods are missing. However, the missing methods:
>  1. _*com.google.common.base.Preconditions: void checkArgument(boolean,java.lang.String,java.lang.Object)*_
> {noformat}
> paths------
> <org.jclouds.skalicloud.SkaliCloudMalaysiaProviderMetadata$Builder: void <init>()> jclouds-master\providers\skalicloud-sdg-my\target\classes
> <org.jclouds.providers.internal.BaseProviderMetadata$Builder: org.jclouds.providers.internal.BaseProviderMetadata$Builder id(java.lang.String)> Repositories\org\apache\jclouds\jclouds-core\2.3.0-SNAPSHOT\jclouds-core-2.3.0-SNAPSHOT.jar
> <org.jclouds.providers.internal.BaseProviderMetadata$Builder: org.jclouds.providers.internal.BaseProviderMetadata$Builder linkedService(java.lang.String)> Repositories\org\apache\jclouds\jclouds-core\2.3.0-SNAPSHOT\jclouds-core-2.3.0-SNAPSHOT.jar
> <com.google.common.collect.Collections2$FilteredCollection: boolean add(java.lang.Object)> Repositories\com\google\guava\guava\18.0\guava-18.0.jar
> <org.jclouds.compute.domain.internal.NullEqualToIsParentOrIsGrandparentOfCurrentLocation: boolean apply(java.lang.Object)> Repositories\org\apache\jclouds\jclouds-compute\2.3.0-SNAPSHOT\jclouds-compute-2.3.0-SNAPSHOT.jar
> <org.jclouds.compute.domain.internal.NullEqualToIsParentOrIsGrandparentOfCurrentLocation: boolean apply(org.jclouds.compute.domain.ComputeMetadata)> Repositories\org\apache\jclouds\jclouds-compute\2.3.0-SNAPSHOT\jclouds-compute-2.3.0-SNAPSHOT.jar
> <com.google.common.base.Preconditions: void checkArgument(boolean,java.lang.String,java.lang.Object)>{noformat}
> 2. _*com.google.common.base.Preconditions: void checkState(boolean,java.lang.String,java.lang.Object,java.lang.Object)*_
> {noformat}
> paths------
> <org.jclouds.skalicloud.SkaliCloudMalaysiaProviderMetadata$Builder: void <init>()> jclouds-master\providers\skalicloud-sdg-my\target\classes
> <org.jclouds.providers.internal.BaseProviderMetadata$Builder: org.jclouds.providers.internal.BaseProviderMetadata$Builder id(java.lang.String)> Repositories\org\apache\jclouds\jclouds-core\2.3.0-SNAPSHOT\jclouds-core-2.3.0-SNAPSHOT.jar
> <org.jclouds.providers.internal.BaseProviderMetadata$Builder: org.jclouds.providers.internal.BaseProviderMetadata$Builder linkedService(java.lang.String)> Repositories\org\apache\jclouds\jclouds-core\2.3.0-SNAPSHOT\jclouds-core-2.3.0-SNAPSHOT.jar
> <com.google.common.collect.Collections2$FilteredCollection: boolean add(java.lang.Object)> Repositories\com\google\guava\guava\18.0\guava-18.0.jar
> <org.jclouds.compute.domain.internal.NullEqualToIsParentOrIsGrandparentOfCurrentLocation: boolean apply(java.lang.Object)> Repositories\org\apache\jclouds\jclouds-compute\2.3.0-SNAPSHOT\jclouds-compute-2.3.0-SNAPSHOT.jar
> <org.jclouds.compute.domain.internal.NullEqualToIsParentOrIsGrandparentOfCurrentLocation: boolean apply(org.jclouds.compute.domain.ComputeMetadata)> Repositories\org\apache\jclouds\jclouds-compute\2.3.0-SNAPSHOT\jclouds-compute-2.3.0-SNAPSHOT.jar
> <org.jclouds.location.suppliers.all.ZoneToProvider: java.lang.Object get()> Repositories\org\apache\jclouds\jclouds-core\2.3.0-SNAPSHOT\jclouds-core-2.3.0-SNAPSHOT.jar
> <org.jclouds.location.suppliers.all.ZoneToProvider: java.util.Set get()> Repositories\org\apache\jclouds\jclouds-core\2.3.0-SNAPSHOT\jclouds-core-2.3.0-SNAPSHOT.jar
> <com.google.common.base.Preconditions: void checkState(boolean,java.lang.String,java.lang.Object,java.lang.Object)> {noformat}
> 3. _*com.google.common.base.Preconditions: void checkArgument(boolean,java.lang.String,int)*_
> {noformat}
> paths------
> <org.jclouds.skalicloud.SkaliCloudMalaysiaProviderMetadata$Builder: org.jclouds.skalicloud.SkaliCloudMalaysiaProviderMetadata$Builder fromProviderMetadata(org.jclouds.providers.ProviderMetadata)> jclouds-master\providers\skalicloud-sdg-my\target\classes
> <org.jclouds.providers.internal.BaseProviderMetadata$Builder: org.jclouds.providers.internal.BaseProviderMetadata$Builder fromProviderMetadata(org.jclouds.providers.ProviderMetadata)> Repositories\org\apache\jclouds\jclouds-core\2.3.0-SNAPSHOT\jclouds-core-2.3.0-SNAPSHOT.jar
> <org.jclouds.providers.internal.BaseProviderMetadata$Builder: org.jclouds.providers.internal.BaseProviderMetadata$Builder linkedServices(java.lang.Iterable)> Repositories\org\apache\jclouds\jclouds-core\2.3.0-SNAPSHOT\jclouds-core-2.3.0-SNAPSHOT.jar
> <com.google.common.collect.Iterables: boolean addAll(java.util.Collection,java.lang.Iterable)> Repositories\com\google\guava\guava\18.0\guava-18.0.jar
> <org.jclouds.io.internal.BasePayloadSlicer$ByteSourcePayloadIterable: java.util.Iterator iterator()> Repositories\org\apache\jclouds\jclouds-core\2.3.0-SNAPSHOT\jclouds-core-2.3.0-SNAPSHOT.jar
> <org.jclouds.io.internal.BasePayloadSlicer$ByteSourcePayloadIterator: void <init>(com.google.common.io.ByteSource,org.jclouds.io.ContentMetadata)> Repositories\org\apache\jclouds\jclouds-core\2.3.0-SNAPSHOT\jclouds-core-2.3.0-SNAPSHOT.jar
> <org.jclouds.io.internal.BasePayloadSlicer$ByteSourcePayloadIterator: org.jclouds.io.Payload getNextPayload()> Repositories\org\apache\jclouds\jclouds-core\2.3.0-SNAPSHOT\jclouds-core-2.3.0-SNAPSHOT.jar
> <org.jclouds.io.ContentMetadataBuilder: org.jclouds.io.ContentMetadataBuilder contentMD5(com.google.common.hash.HashCode)> Repositories\org\apache\jclouds\jclouds-core\2.3.0-SNAPSHOT\jclouds-core-2.3.0-SNAPSHOT.jar
> <com.google.common.base.Preconditions: void checkArgument(boolean,java.lang.String,int)> {noformat}
> 4. _*com.google.common.base.Preconditions: void checkArgument(boolean,java.lang.String,java.lang.Object,java.lang.Object)*_
> {noformat}
> paths------
> <org.jclouds.skalicloud.SkaliCloudMalaysiaProviderMetadata$Builder: org.jclouds.skalicloud.SkaliCloudMalaysiaProviderMetadata$Builder fromProviderMetadata(org.jclouds.providers.ProviderMetadata)> jclouds-master\providers\skalicloud-sdg-my\target\classes
> <org.jclouds.providers.internal.BaseProviderMetadata$Builder: org.jclouds.providers.internal.BaseProviderMetadata$Builder fromProviderMetadata(org.jclouds.providers.ProviderMetadata)> Repositories\org\apache\jclouds\jclouds-core\2.3.0-SNAPSHOT\jclouds-core-2.3.0-SNAPSHOT.jar
> <org.jclouds.providers.internal.BaseProviderMetadata$Builder: org.jclouds.providers.internal.BaseProviderMetadata$Builder id(java.lang.String)> Repositories\org\apache\jclouds\jclouds-core\2.3.0-SNAPSHOT\jclouds-core-2.3.0-SNAPSHOT.jar
> <org.jclouds.providers.internal.BaseProviderMetadata$Builder: org.jclouds.providers.internal.BaseProviderMetadata$Builder linkedService(java.lang.String)> Repositories\org\apache\jclouds\jclouds-core\2.3.0-SNAPSHOT\jclouds-core-2.3.0-SNAPSHOT.jar
> <com.google.common.collect.Collections2$FilteredCollection: boolean add(java.lang.Object)> Repositories\com\google\guava\guava\18.0\guava-18.0.jar
> <org.jclouds.compute.util.ConcurrentOpenSocketFinder$3: boolean apply(java.lang.Object)> Repositories\org\apache\jclouds\jclouds-compute\2.3.0-SNAPSHOT\jclouds-compute-2.3.0-SNAPSHOT.jar
> <com.google.common.base.Predicates$CompositionPredicate: boolean apply(java.lang.Object)> Repositories\com\google\guava\guava\18.0\guava-18.0.jar
> <org.jclouds.location.functions.RegionToEndpoint: java.lang.Object apply(java.lang.Object)> Repositories\org\apache\jclouds\jclouds-core\2.3.0-SNAPSHOT\jclouds-core-2.3.0-SNAPSHOT.jar
> <org.jclouds.location.functions.RegionToEndpoint: java.net.URI apply(java.lang.Object)> Repositories\org\apache\jclouds\jclouds-core\2.3.0-SNAPSHOT\jclouds-core-2.3.0-SNAPSHOT.jar
> <com.google.common.base.Preconditions: void checkArgument(boolean,java.lang.String,java.lang.Object,java.lang.Object)>{noformat}
> 5. _*com.google.common.base.Preconditions: void checkState(boolean,java.lang.String,java.lang.Object)*_
> {noformat}
> paths------
> <org.jclouds.skalicloud.SkaliCloudMalaysiaProviderMetadata: org.jclouds.skalicloud.SkaliCloudMalaysiaProviderMetadata$Builder builder()> jclouds-master\providers\skalicloud-sdg-my\target\classes
> <org.jclouds.skalicloud.SkaliCloudMalaysiaProviderMetadata$Builder: void <init>()> jclouds-master\providers\skalicloud-sdg-my\target\classes
> <org.jclouds.elasticstack.ElasticStackApiMetadata: void <init>()> Repositories\org\apache\jclouds\api\elasticstack\2.3.0-SNAPSHOT\elasticstack-2.3.0-SNAPSHOT.jar
> <org.jclouds.elasticstack.ElasticStackApiMetadata$Builder: void <init>()> Repositories\org\apache\jclouds\api\elasticstack\2.3.0-SNAPSHOT\elasticstack-2.3.0-SNAPSHOT.jar
> <org.jclouds.rest.internal.BaseHttpApiMetadata$Builder: void <init>()> Repositories\org\apache\jclouds\jclouds-core\2.3.0-SNAPSHOT\jclouds-core-2.3.0-SNAPSHOT.jar
> <org.jclouds.reflect.Types2: com.google.common.reflect.TypeToken checkBound(com.google.common.reflect.TypeToken)> Repositories\org\apache\jclouds\jclouds-core\2.3.0-SNAPSHOT\jclouds-core-2.3.0-SNAPSHOT.jar
> <com.google.common.base.Preconditions: void checkState(boolean,java.lang.String,java.lang.Object)>{noformat}
> 6. _*com.google.common.net.HostAndPort: java.lang.String getHost()*_
> {noformat}
> paths------
> <org.jclouds.skalicloud.SkaliCloudMalaysiaProviderMetadata$Builder: org.jclouds.skalicloud.SkaliCloudMalaysiaProviderMetadata$Builder fromProviderMetadata(org.jclouds.providers.ProviderMetadata)> jclouds-master\providers\skalicloud-sdg-my\target\classes
> <org.jclouds.providers.internal.BaseProviderMetadata$Builder: org.jclouds.providers.internal.BaseProviderMetadata$Builder fromProviderMetadata(org.jclouds.providers.ProviderMetadata)> Repositories\org\apache\jclouds\jclouds-core\2.3.0-SNAPSHOT\jclouds-core-2.3.0-SNAPSHOT.jar
> <org.jclouds.providers.internal.BaseProviderMetadata$Builder: org.jclouds.providers.internal.BaseProviderMetadata$Builder id(java.lang.String)> Repositories\org\apache\jclouds\jclouds-core\2.3.0-SNAPSHOT\jclouds-core-2.3.0-SNAPSHOT.jar
> <org.jclouds.providers.internal.BaseProviderMetadata$Builder: org.jclouds.providers.internal.BaseProviderMetadata$Builder linkedService(java.lang.String)> Repositories\org\apache\jclouds\jclouds-core\2.3.0-SNAPSHOT\jclouds-core-2.3.0-SNAPSHOT.jar
> <com.google.common.collect.Collections2$FilteredCollection: boolean add(java.lang.Object)> Repositories\com\google\guava\guava\18.0\guava-18.0.jar
> <org.jclouds.compute.stub.config.StubComputeServiceDependenciesModule$StubSocketOpen: boolean apply(java.lang.Object)> Repositories\org\apache\jclouds\jclouds-compute\2.3.0-SNAPSHOT\jclouds-compute-2.3.0-SNAPSHOT.jar
> <org.jclouds.compute.stub.config.StubComputeServiceDependenciesModule$StubSocketOpen: boolean apply(com.google.common.net.HostAndPort)> Repositories\org\apache\jclouds\jclouds-compute\2.3.0-SNAPSHOT\jclouds-compute-2.3.0-SNAPSHOT.jar
> <com.google.common.net.HostAndPort: java.lang.String getHost()>{noformat}
> The above missing methods are actually referenced by _*com.google.guava:guava:22.0*_, which will cause “NoSuchMethodErrors” at runtime.
> Suggested fixing solutions:
>  1. Upgrade dependency _*com.google.guava:guava*_ from _*18.0*_ to _*22.0*_.
>  2. Use configuration attribute <dependencyManagement> to unify the version of library _*com.google.guava:guava*_ to be _*22.0*_ in jclouds-master\providers\skalicloud-sdg-my's pom file.
> Please let me know which solution do you prefer? I can submit a PR to fix it.
> Thank you very much for your attention.
>  Best regards,
> Dependency tree----
> [INFO] org.apache.jclouds.provider:skalicloud-sdg-my:bundle:2.3.0-SNAPSHOT
>  [INFO] +- org.apache.jclouds.api:elasticstack:jar:2.3.0-SNAPSHOT:compile
>  [INFO] | - org.apache.jclouds:jclouds-compute:jar:2.3.0-SNAPSHOT:compile
>  [INFO] | - org.apache.jclouds:jclouds-core:jar:2.3.0-SNAPSHOT:compile
>  [INFO] | - *(com.google.guava:guava:jar:18.0:compile - version managed from 22.0; omitted for duplicate)*
>  [INFO] +- org.apache.jclouds:jclouds-core:test-jar:tests:2.3.0-SNAPSHOT:test
>  [INFO] | - *(com.google.guava:guava:jar:18.0:compile - version managed from 22.0; scope updated from test; omitted for duplicate)*
>  [INFO] +- com.google.auto.service:auto-service:jar:1.0-rc3:compile
>  [INFO] | +- com.google.auto:auto-common:jar:0.3:compile
>  [INFO] | | - *(com.google.guava:guava:jar:18.0:compile - version managed from 19.0; omitted for duplicate)*
>  [INFO] | - *com.google.guava:guava:jar:18.0:compile*
>  [INFO] - org.assertj:assertj-guava:jar:1.3.0:test
>  [INFO] - *(com.google.guava:guava:jar:18.0:test - omitted for duplicate)*



--
This message was sent by Atlassian Jira
(v8.3.4#803005)